You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Instagram私有API遭403错误,求规避方案及认证测试指导

解决Instagram私有API 403认证问题的初步排查建议

Instagram的私有API反爬机制一直很严格,你遇到的403问题我之前帮不少开发者排查过,咱们一步步拆解可能的原因:

1. 先确认Cookies的有效性与完整性

Instagram认证依赖的核心Cookies字段一个都不能少,而且必须是当前登录状态下的最新值:

  • sessionid:会话核心标识,一旦过期或不匹配直接触发403
  • csrftoken:必须和请求头里的X-CSRFToken完全一致,建议每次请求前从Cookies中提取最新值
  • ds_user_id:绑定你的用户ID,要和登录账号对应
  • 额外字段:比如mid、ig_did、ig_nrcb(开启双重验证的账号需要),最好从浏览器登录后的Cookies里完整复制

注意:Cookies会绑定登录IP,如果你用代理或不同IP运行代码,之前的Cookies会直接失效。

2. 请求头的细节不能遗漏

除了常规的User-Agent和Referer,这几个容易被忽略的头是关键:

  • X-IG-App-ID:网页版固定值一般是936619743392459,最好从浏览器真实请求中抓取,防止官方更新
  • X-IG-WWW-Claim:多数私有API请求需要,格式通常为0,直接复制浏览器请求中的值即可
  • Accept-Language:设置成和登录时一致的语言,比如en-US,en;q=0.9

另外,User-Agent一定要用真实的浏览器UA,别用过于老旧或特殊的标识,比如Chrome最新版UA:

Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36

3. 私有API的端点与参数要精准匹配

评论分页的API端点一般是/api/v1/media/{media_id}/comments/,注意这几个细节:

  • 请求方法:评论列表是GET请求,别误写成POST
  • 参数格式:max_id是分页核心,第一次请求留空,后续用返回的next_max_id填充;参数最好用urllib.parse.urlencode处理,避免编码错误
  • 端点路径:确保没有拼写错误,比如别把media写成medias

给你个简化的测试代码片段,你可以对比调整:

import requests

# 从浏览器复制的完整Cookies,转成字典
cookies = {
    'sessionid': '你的sessionid',
    'csrftoken': '你的csrftoken',
    'ds_user_id': '你的用户ID',
    'mid': '你的mid值',
    'ig_did': '你的ig_did值'
}

headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36',
    'X-CSRFToken': cookies['csrftoken'],
    'X-IG-App-ID': '936619743392459',
    'Referer': 'https://www.instagram.com/p/你的帖子ID/',
    'Accept-Language': 'en-US,en;q=0.9',
}

media_id = '目标帖子的media_id'
url = f'https://www.instagram.com/api/v1/media/{media_id}/comments/'
params = {
    'max_id': '',  # 第一次请求留空,后续用返回的next_max_id替换
    'limit': '20',
}

response = requests.get(url, headers=headers, cookies=cookies, params=params)
print(response.status_code)
print(response.json())

4. 测试时的避坑技巧

  • 先复刻浏览器请求:手动在浏览器加载评论分页,把完整的Headers、Cookies、参数复制到代码中,完全复刻后测试是否还403。如果复刻成功,再逐步替换成你代码里的内容,定位差异点。
  • 控制请求频率:Instagram会检测请求密度,测试时每次请求间隔3-5秒,别频繁触发反爬机制。

如果按这些步骤排查后还是有问题,可以把打码后的请求Headers、Cookies和API端点贴出来,我再帮你进一步分析。

内容的提问来源于stack exchange,提问作者Vladyslav Didenko

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 04:01:56