如何抓取公共Instagram数据用于市场研究

Instagram在2020年关闭了公共API访问,但公共网络端点仍然返回个人资料、帖子和标签数据为JSON格式。以下是可访问的内容、为何移动IP重要以及界限所在。

Instagram在2020年关闭了其官方API的公共访问,这就是为什么每个Instagram数据抓取指南现在都依赖于公共网络端点。对市场研究来说,好消息是这些端点仍然返回个人资料、帖子、短视频和标签数量为干净的JSON格式,无需登录。问题在于Instagram是最积极标记自动化流量的平台之一,因此您使用的IP和保持的速度决定了端点是否保持开放。本指南涵盖了可访问的内容、访问它的代码以及您不应跨越的ToS和GDPR界限。

您实际上可以收集哪些公共Instagram数据

无需账户,您可以访问大量惊人的数据,所有这些对于市场和影响者研究都很有用:

没有经过身份验证的会话,您无法获得:完整的粉丝列表、点赞某个帖子的账户列表、私人账户和故事。这些端点需要会话cookie,而这正是账户封禁和ToS违规集中的地方。对于研究,请停留在公共表面。

公共Instagram数据如个人资料、帖子和标签数量与登录门控数据如粉丝列表和点赞者的比较,后者带有账户封禁风险
公共网络数据是安全的表面;任何在会话cookie背后的东西都带有账户封禁和ToS风险。

公共个人资料端点及其代码

Instagram的网络应用从一个JSON端点获取个人资料数据,任何人都可以调用,只要您发送公共网络应用ID头。通过代理路由,您可以在几行代码中获取个人资料数据:

import requests

PROXY = "http://USER:PASS@gate.quantumproxies.io:8000"  # mobile pool
proxies = {"http": PROXY, "https": PROXY}

HEADERS = {
    "x-ig-app-id": "936619743392459",  # public web app id
    "User-Agent": "Mozilla/5.0 (iPhone; CPU iPhone OS 17_2 like Mac OS X) "
                  "AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148",
}

def profile(username):
    url = "https://www.instagram.com/api/v1/users/web_profile_info/"
    r = requests.get(url, params={"username": username},
                     headers=HEADERS, proxies=proxies, timeout=20)
    r.raise_for_status()
    return r.json()["data"]["user"]

u = profile("natgeo")
print(u["full_name"], u["edge_followed_by"]["count"])

相同的载荷在edge_owner_to_timeline_media下携带最近的帖子,因此一次调用即可获得个人资料及其最新互动:

for edge in u["edge_owner_to_timeline_media"]["edges"]:
    node = edge["node"]
    print(node["shortcode"],
          node["edge_media_preview_like"]["count"],   # likes
          node["edge_media_to_comment"]["count"])       # comments

为什么移动代理在Instagram上胜出

Instagram最常见的失败是速率限制阻止:端点开始返回错误并暂时封禁访问它的IP。等待和延长超时有点帮助,但持久的解决方案是IP类型。移动代理在这里是最强的选择,因为CGNAT——一个移动IP由数千个真实用户共享,因此Instagram无法封禁它而不影响真实用户。这使得移动出口最难封禁,并且最接近大多数人实际浏览应用的方式。我们关于为什么CGNAT使移动IP受信任的解释涵盖了机制,移动代理与VPN解释了为什么VPN不能做到这一点。

移动代理池与人类节奏配对——随机延迟、限制并发,当阻止率上升时停止——公共端点在长时间收集运行中保持开放。

当没有可用的移动池时,住宅代理是一个合理的备选方案——我们的住宅网络覆盖200多个国家以实现地理准确的收集——但在Instagram上,移动出口存活时间最长。无论IP类型如何,将速率限制响应视为放慢速度的信号,而不是更努力地重试:退后、轮换,并延长调用之间的间隔。一个尊重节流的抓取器在一天内收集的比一个在一小时内通过阻止并烧毁其池的抓取器要多得多。

一个有弹性的公共Instagram管道,将用户名和标签的种子列表通过移动代理路由到公共web_profile_info JSON端点并转换为结构化行
移动IP加上人类节奏在长时间运行中保持公共端点开放——CGNAT使这些出口难以封禁。

获取为社交平台构建的移动代理

标签和发现

对于趋势和影响者发现,标签数据胜过抓取个人资料。标签页面展示帖子数量和相关标签集群,这让您可以绘制一个话题的饱和程度,并找到更安静的相邻标签进行目标定位。将其与每个个人资料的参与率结合起来——点赞和评论除以粉丝数量——您可以在不接触门控数据的情况下获得一个有力的创作者候选名单。如果您的研究跨平台,TikTok公共数据也适用相同的原则,并且与在Instagram、TikTok和X上运行社交自动化有重叠。

保留什么,放弃什么

对于研究,存储聚合信号并放弃其他。粉丝和关注者数量、发帖频率、平均点赞和评论以及标签使用情况告诉您关于覆盖范围和参与度的一切,而无需保留大量个人详细信息。媒体URL会过期,完整标题会膨胀您的存储,因此保留稳定的标识符如shortcode加上指标,并根据需要重新获取内容。最小化您持有的内容既是良好的工程实践,也是GDPR界限的安全一侧——参与率表比一个包含命名账户及其帖子的仓库敏感性低得多。

ToS和GDPR界限

两个界限很重要。首先,Instagram的条款限制自动化收集,使用登录会话抓取门控数据不仅风险账户,还有IP——对于研究,请保持在公共、未经身份验证的端点。其次,粉丝句柄、评论作者和个人资料详细信息是个人数据。在GDPR和类似法规下,您需要合法依据来收集和存储它,您应该最小化您保留的内容,并且您应该避免在没有明确理由的情况下构建可识别个人的档案。聚合指标(粉丝数量、参与率、标签数量)比命名人员列表安全得多。我们关于GDPR和抓取个人数据的指南涵盖了具体细节——这是一种实用指导,而不是法律建议。

常见问题解答

可以在没有账户的情况下抓取Instagram数据吗?

可以,对于公共数据。网络个人资料端点在您发送公共x-ig-app-id头时返回简介、粉丝数量和最近的帖子为JSON格式,标签和地点页面展示数量和元数据。粉丝列表、点赞者和私人账户需要经过身份验证的会话,研究时应避免。

为什么Instagram不断对我的抓取器进行速率限制?

您从Instagram不信任的IP过快地访问端点。通过随机延迟放慢速度,限制并发,并切换到移动代理——一个CGNAT移动IP由数千个真实用户共享,因此Instagram比数据中心地址更慢地封禁它。

抓取Instagram数据合法吗?

收集公共、非个人数据用于研究通常风险较低,但Instagram的条款限制自动化,个人数据受GDPR和类似法律的管辖。保持在公共端点,最小化您存储的个人数据,并在涉及大规模可识别个人时咨询律师。这不是法律建议。

Instagram抓取的最佳代理类型是什么?

移动代理。因为CGNAT将一个移动IP映射到许多真实用户,平台无法封禁它而不造成连带损害,使得移动出口在持续收集中最为持久。住宅代理是一个合理的第二选择;数据中心IP最快被封禁。

公共Instagram数据对于市场研究非常可访问——个人资料、帖子和标签端点仍然返回干净的JSON。决定成功的两个变量是IP(移动胜出)和克制(仅限公共数据、人类节奏、最小化个人数据)。做好这些,端点就会保持开放。

开始使用QuantumProxies移动代理进行收集