使用Instagram私有API遭403错误,求规避方案及认证测试指导
解决Instagram私有API 403认证问题的初步排查建议
Instagram的私有API反爬机制一直很严格,你遇到的403问题我之前帮不少开发者排查过,咱们一步步拆解可能的原因:
1. 先确认Cookies的有效性与完整性
Instagram认证依赖的核心Cookies字段一个都不能少,而且必须是当前登录状态下的最新值:
sessionid:会话核心标识,一旦过期或不匹配直接触发403csrftoken:必须和请求头里的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
相关产品推荐
相关产品推荐

