Phải làm gì nếu Instagram không cung cấp quyền truy cập vào API? Phép cộng. Instagram đã đóng API mà không có cảnh báo: lý do của việc này là gì và nó có thể dẫn đến điều gì? Instagram đã đóng quyền truy cập vào API

Thông tin Instagram đóng API không phải vào tháng 12 như kế hoạch trước đó mà là ngay bây giờ, khiến mọi người thực sự ngạc nhiên vì không có cảnh báo nào về những thay đổi sắp tới ở bất kỳ đâu. Tuy nhiên, một số người dùng đã phát hiện ra các điều kiện tiên quyết để đóng API trở lại vào ngày 31 tháng 3, khi Instagram khiến họ phẫn nộ khi giới hạn số lượng yêu cầu đối với API tới 25 lần (từ 5000 xuống 200)!
Vào ngày 2 tháng 4, quyền truy cập đã bị chặn một phần và vào ngày 5 tháng 4, hầu hết tất cả các tài nguyên của bên thứ ba không phải là đối tác của Facebook đều phải đối mặt với những hạn chế đáng kể. Điều này đã ảnh hưởng gì?

Dịch vụ phân tích phân tích tài khoản người dùng đặc biệt là LiveDune, từ giờ trở đi sẽ không thể nhận thông tin từ Instagram theo cách họ vẫn quen, tức là không thể phân tích đầy đủ các tài khoản nữa (ngoại lệ duy nhất là tài khoản doanh nghiệp). Phân tích chuyên sâu về đối tượng và loại người đăng ký cũng như tìm kiếm và phân tích thẻ bắt đầu bằng # giờ đây cũng không thể thực hiện được.
Giám sát nhận xét không khả dụng, việc dỡ bỏ người đăng ký đã trở thành một nhiệm vụ phi thực tế - các ứng dụng di động, trước đây cho thấy ai đã đăng ký tài khoản và khi nào, bị đóng băng. Có giả định rằng trong tương lai gần sẽ không thể nhìn thấy người đăng ký thông qua API riêng tư, theo đó, tất cả các dịch vụ hoạt động thông qua nó (bao gồm cả dịch vụ kiểm tra người viết blog) cũng sẽ chìm vào quên lãng trong tương lai gần. Trước những thay đổi như vậy, nhiều người đã bắt đầu suy nghĩ nghiêm túc về việc chuyển sang tài khoản doanh nghiệp, vì giờ đây đây là lựa chọn duy nhất để nhận được phân tích sâu về tài khoản của chính họ và cơ hội rộng hơn để sử dụng toàn bộ dịch vụ.

Công ty mẹ, tức là Facebook, hiện đang rung chuyển trước cơn hoảng loạn lớn do vụ bê bối gần đây với công ty Cambridge Analytica - công ty sau này đã dám sử dụng tài khoản người dùng để đạt được mục tiêu riêng, lách luật của mạng xã hội. Ban đầu, có thông tin cho rằng khoảng năm mươi triệu tài khoản đã bị rò rỉ từ sâu trong Facebook, tuy nhiên, theo dữ liệu mới nhất, số lượng rò rỉ hóa ra còn ấn tượng hơn nhiều - hóa ra, chúng đã vượt quá tám mươi bảy triệu tài khoản! Vì vậy, sự hoảng loạn của Facebook là điều khá dễ hiểu, bởi vì tất cả những điều này không thể không ảnh hưởng đến danh tiếng của công ty và không theo cách tốt nhất (thậm chí vốn hóa của Facebook đã giảm tới 60 tỷ đô la trong vài tuần qua). Việc đóng API bất ngờ và gây sốc không gì khác hơn là một nỗ lực của công ty nhằm tăng cường bảo vệ dữ liệu có giá trị của người dùng.

Nhưng một quyết định như vậy của Facebook có thể làm phức tạp đáng kể công việc của các công ty tiếp thị, công ty dịch vụ (việc theo dõi đánh giá và khiếu nại của khách hàng giờ đây sẽ cực kỳ khó khăn) và các nhà phát triển tiến bộ, vì một sự đổi mới bất ngờ sẽ có tác động rất tiêu cực đến hoạt động của dịch vụ tìm kiếm. đánh giá và phân tích người đăng ký.

Điều gì sẽ xảy ra tiếp theo? Và đây đã là vấn đề thời gian, vì hiện tại đại diện của Instagram vẫn chưa đưa ra bất kỳ câu trả lời hay bình luận chính thức nào và trang web của công ty Facebook cũng chưa vén bức màn bí mật!

Hôm nay, Instagram đã đưa ra một tuyên bố đề cập đến một thay đổi lớn trong chính sách của công ty. Mạng xã hội đang đóng API khỏi các nhà phát triển bên thứ ba mới và sẽ kiểm tra tất cả các API hiện có. Những thay đổi này sẽ ảnh hưởng đến tất cả các ứng dụng cho phép bạn xem nguồn cấp dữ liệu Instagram của mình thông qua tài nguyên của bên thứ ba, cũng như tự động đặt lượt thích và đăng lại trên Instagram.

Instagram được ra mắt vào năm 2011 và chính những người sáng tạo cũng thừa nhận rằng vào thời điểm đó họ không có đủ nguồn lực để phát triển tất cả khả năng của nền tảng mà họ đã tạo ra. API mở cho phép các nhà phát triển bên thứ ba tạo ra hàng trăm ứng dụng dựa trên chức năng của mạng xã hội. Sau 4 năm, Instagram quyết định đóng lại cơ hội này.

Trước hết, điều này là do Instagram đang bận rộn tăng lợi nhuận, theo các nhà báo của TechCrunch. Ít nhất, tất cả các hành động gần đây của công ty đều chỉ ra điều này. Vào đầu tháng 9, khả năng xuất bản nội dung trong nguồn cấp dữ liệu người dùng cũng được mở rộng và sau đó là mạng xã hội Boomerang, nơi bạn có thể tạo các video lặp lại.

Các ứng dụng do chính Instagram tạo ra là một lý do khác cho động thái này. Trước Boomerang, mạng xã hội này đã phát hành thêm hai ứng dụng: Layouts - dành cho ảnh ghép và Hyperlapse - dành cho tua nhanh thời gian. Trong bối cảnh này, các ứng dụng của bên thứ ba lặp lại hoặc bổ sung chức năng chính của mạng xã hội sẽ trở thành gánh nặng.

Bắt đầu từ hôm nay, Instagram đã vô hiệu hóa quyền truy cập vào API nguồn cấp dữ liệu của nó đối với các ứng dụng mới. Từ ngày 3 tháng 12, việc xem xét tất cả các ứng dụng hiện có cũng như đánh giá các ứng dụng mới sẽ bắt đầu theo chính sách cập nhật. Vào ngày 1 tháng 6 năm 2016, tất cả các ứng dụng cũ sẽ phải đồng ý với các điều khoản API mới.

Việc giảm chủ yếu sẽ ảnh hưởng đến các ứng dụng cho phép bạn xem nguồn cấp dữ liệu Instagram trên các thiết bị không có Instagram. Như vậy, đến ngày 1/6, những thay đổi sẽ ảnh hưởng đến các ứng dụng như Retro, Flow, Padgram, Pictacular cho iPad, Webbygram, Webstagram, Instagreat, Itsdagram cho máy tính để bàn, v.v.

Những thay đổi này cũng có mặt tích cực. Người dùng mạng xã hội lưu ý rằng việc vô hiệu hóa khả năng nhận/đặt lượt thích và đăng ký tự động thông qua ứng dụng của bên thứ ba sẽ loại bỏ nhiều dịch vụ cho phép bạn “thổi phồng” số liệu thống kê hồ sơ. Nói một cách đại khái, các cửa hàng Instagram sẽ ngừng đăng ký đối tượng không phải mục tiêu.

Instagram được Facebook mua lại vào năm 2012 với giá 1 tỷ USD. Hiện tại, số lượng người dùng của tài nguyên này đã lên tới hơn 400 triệu người.

Khán giả Instagram ở Ukraine là khoảng 800.000 người. Ngoài ra, khoảng 66% khán giả là các cô gái. Bạn có thể đọc thêm về khán giả Ukraina của mạng xã hội trong bài báo chúng tôi đã xuất bản vào tháng trước.

Nhận thấy một sai lầm? Chọn nó và nhấp vào Ctrl+Enterđể cho chúng tôi biết.

Và đối với tôi, dường như nó có thể được tiếp tục.

Không có gì bí mật khi nền tảng phổ biến và mang lại lợi nhuận cao nhất cho quảng cáo, kinh doanh và những thứ khác là Instagram. Tại sao nó trở thành một dịch vụ mà lúc đầu chỉ có thể tải lên những hình ảnh có kích thước nhất định (có nghĩa là tỷ lệ khung hình) và hoàn toàn không có gì có trên mạng xã hội vào thời điểm đó - điều đó hoàn toàn không rõ ràng, nhưng thực tế là một sự thật. Vì lý do này, mọi người đều đang cố gắng thâm nhập vào nền tảng Instagram và thu hút lượng khán giả lớn nhất từ ​​​​đó và tất nhiên họ làm điều này không phải thủ công. Và điều tiếp theo là Instagram chặn nghiêm ngặt quyền truy cập của bot, kẻ gửi thư rác, v.v., để mạng luôn trong sạch.

  1. Các chức năng hữu ích nhất (đăng và xóa bài đăng) chỉ có sẵn từ ứng dụng di động Instagram; rất khó để mô phỏng các yêu cầu vì bạn cần lấy một khóa từ ứng dụng được cập nhật với mỗi phiên bản mới.
  2. Phiên bản web bị cắt nhưng tôi rất vui vì nó có khả năng thích, bình luận và xóa bình luận
  3. Có một API, nhưng quy trình để có được nó rất dài và những kẻ gửi thư rác cũng như bot chắc chắn không có tùy chọn này. Ngoài ra, có nhiều thời điểm các quy ước API thay đổi, điều này không phải lúc nào cũng thuận tiện.
Mặc dù tôi không tham gia vào Instagram để tạo ra một bot spam khác có thể đăng ký và thích, nhưng tôi thực sự không muốn bận tâm đến việc lấy API Instagram, vì vậy tôi phải viết thư viện của riêng mình để tương tác với Instagram.

Tôi muốn nói rằng làm việc với phiên bản Web của Instagram rất thú vị vì hai lý do:

1. Bạn có thể nhận thông tin ngắn gọn về bất kỳ trang nào bằng cách gửi yêu cầu GET như:

https://instagram.com/zuck/?__a=1
Và phản hồi là JSON với thông tin có sẵn, 10 bài đăng đầu tiên của trang, v.v. Rất đẹp.

2. Nếu thông tin ngắn gọn thôi vẫn chưa đủ thì còn có một tin vui khác. Bạn có thể tải lên lại ảnh, đăng ký, nhận xét bằng một yêu cầu cụ thể như

https://www.instagram.com/graphql/query/?query_id=17888483320059182&variables=...
, trong đó các biến được chuyển đến các biến để xử lý ở định dạng JSON. Phản hồi cũng là JSON. Và nói chung, rõ ràng là tất cả những điều này đều hoạt động trên GraphQL, vì vậy để hiểu cách xử lý các yêu cầu, bạn thậm chí có thể Google.

Toàn bộ thư viện được xây dựng trên cơ sở kiến ​​thức này. Tôi sẽ mô tả ngắn gọn cách sử dụng nó, có thể nó sẽ hữu ích cho ai đó. Nhân tiện, tôi đã chỉ ra giấy phép BSD 3 trong kho ở đó. Nói cho tôi biết, có lẽ tôi nên thay đổi nó để không gặp khó khăn gì?

Cài đặt

Không cần phải cài đặt nó. Chính xác hơn, tôi quá lười để viết tất cả các loại setup.py hoặc đóng gói nó khi thư viện chỉ bao gồm một tệp. Do đó, chỉ có một tệp instagram.py, được kết nối như thế này:

Nhập trình phân tích cú pháp

Làm thế nào để sử dụng nó?

Có thể tương tác với Instagram dù có hoặc không có sự cho phép. Nếu không được ủy quyền, sẽ không có chức năng xem đăng ký và người đăng ký, và rõ ràng là không thể thích nội dung nào đó, nhận xét về nội dung nào đó, v.v. Hạn chế duy nhất với ủy quyền: không thể đăng bài và xóa chúng.

Từ instaparser.agents nhập Tác nhân từ instaparser.entities nhập Tài khoản Agent=Agent() account=Account("zuck") Agent.update(account) media=agent.get_media(account, count=100) for m in media: print( m)
Như bạn hiểu, tập lệnh này tải xuống thông tin về trang của Mark Zuckerberg, tải xuống 100 bài đăng cuối cùng từ trang của anh ấy và hiển thị chúng trên màn hình.

Tôi muốn nói rằng nếu tôi không viết

Agent.update(tài khoản)
thì việc tải bài đăng sẽ không thể thực hiện được vì không có thông tin nào về trang của Zuckerberg được biết đến.

Từ instaparser.agents nhập AgentAccount từ instaparser.entities nhập Tài khoản Agent=AgentAccount("oleg_yurchik", "imasuperpassword") Agent.update() account=Account("zuck") Agent.update(account) #, v.v.
Đây là cái gọi là Chào thế giới!. Hoặc một sự khởi đầu nhanh chóng.

Bây giờ tôi sẽ nói với bạn chi tiết hơn:

Trên thực tế, Instagram chỉ có 6 thực thể:

  1. Tài khoản
  2. Định vị địa lý
  3. Một lời bình luận
  4. Dấu thăng
  5. Những câu chuyện
Mọi thứ khác chỉ là danh sách các thực thể này, chẳng hạn như lượt thích, đăng ký, người đăng ký, v.v. Và đối với mỗi thực thể có lớp riêng của nó. Dành cho tài khoản - Tài khoản, bài đăng - Phương tiện, vị trí địa lý - Vị trí, bình luận - Bình luận, hashtag - Tag, câu chuyện - Câu chuyện. Và mỗi trong số chúng (trừ bình luận) cần phải được cập nhật trước khi làm việc với nó. Nghĩa là, nếu bạn muốn tải xuống tất cả các bài đăng của mình, thích chúng và nhận danh sách các vị trí địa lý, thì bạn cần làm như sau:

Từ instaparser.agents import AgentAccoun Agent=AgentAccount("oleg.yurchik", "anothersuperpassword") Agent.update() media=agent.get_media(count=agent.media_count)location= cho m trong media: Agent.like(m) Agent.update(m) if m.location: location.append(m.location)
Và nếu sau này bạn cần lấy 10 bài đăng cuối cùng cho một vị trí địa lý cụ thể, thì bạn sẽ cần phải làm như sau:

Agent.update(location) media=agent.get_media(location, count=10)
Tôi đã phải loại bỏ chức năng cập nhật tài khoản khỏi quá trình khởi tạo, vì nếu cần lấy tất cả người đăng ký chẳng hạn, chương trình sẽ cập nhật từng tài khoản và điều này là không tốt.

Thư viện dựa trên thư viện yêu cầu và một trong những tính năng mà tôi nghĩ là bạn cũng có thể chuyển các tham số bổ sung cho các yêu cầu cho các phương thức. Ý tưởng này đến với tôi khi lần đầu tiên tôi nhận được lỗi 429 từ Instagram. Nó là cần thiết để sử dụng một proxy.

Ví dụ: bạn có thể làm điều này:

Media=agent.get_media(count=agent.media_count, settings=("proxies": ("https": "127.0.0.1:80")))
trong đó 127.0.0.1:80 - bạn có thể chỉ định proxy của mình

Ngoài ra, tôi nghĩ một tính năng khác có thể là chặn lỗi.

Trong các lớp Agent và AgentAccount (những lớp giao tiếp với Instagram) có một từ điển được tổ chức giống như một cái cây, nó được gọi là hành động ngoại lệ. Nó lưu trữ các lớp ngoại lệ dưới dạng khóa và hoạt động dưới dạng giá trị. Nếu một số lỗi đột nhiên xảy ra, nó sẽ bị chặn và chức năng từ từ điển sẽ được thực thi. Hàm này được truyền đối tượng ngoại lệ và các tham số mà yêu cầu được thực thi. Nó có thể thực hiện một số hành động và trả về các tham số yêu cầu đã sửa đổi (hoặc không). Yêu cầu sẽ được thực hiện lại. Và nó sẽ được lặp lại nhiều lần như được chỉ định trong tham số Agent.repeat. Giá trị mặc định là 1.

Và bạn không phải lo lắng về việc tràn bộ nhớ.

Mỗi lớp thực thể có một từ điển trong đó tất cả các đối tượng của lớp này (hoặc thậm chí các đối tượng của lớp con) được lưu trữ. Do đó, nếu bạn vô tình tạo, chẳng hạn như một tài khoản đã được tạo, hàm tạo sẽ trả lại cho bạn một liên kết đến tài khoản đã tạo trước đó.

Và cuối cùng, tôi sẽ nói rằng do một số quyết định, một số vấn đề cũng đã xuất hiện:

  1. Ví dụ, một vấn đề khi tạo lại một đối tượng. Nếu bạn đột nhiên muốn sử dụng tài khoản của mình làm tài khoản công việc và tương tác thông qua tài khoản đó nhưng trước đó nó đã được tạo như một tài khoản thông thường thì bạn sẽ không thể tạo lại tài khoản đó. Tôi vẫn chưa biết cách giải quyết vấn đề này.
  2. Việc bắt lỗi đôi khi hoạt động rất kỳ lạ và chưa được kiểm tra đầy đủ.
Tôi thực sự hy vọng rằng có thể giải pháp này sẽ hữu ích cho ai đó, tôi hy vọng mọi nhận xét hữu ích và trợ giúp để hoàn thành công việc này. Bài viết tôi đề cập đã đưa ra một ví dụ về tập lệnh như vậy trong PHP, nhưng nó chỉ thu thập thông tin và theo tôi, nó chỉ hoạt động với phiên bản cũ của giao diện web Instagram.

Cám ơn vì sự quan tâm của bạn.