未登录调用Instagram用户数据API遇400错误,求Python requests解决方案
解决Instagram web_profile_info API请求400错误的方案
当你用Python requests库调用Instagram的web_profile_info API时出现400错误,核心原因是请求缺少浏览器自带的关键请求头——Instagram的API会通过这些头验证请求来源,仅用requests默认的请求头会被判定为非法请求。
必要请求头说明
从你提供的浏览器请求截图来看,以下几个请求头是必须的:
User-Agent:模拟浏览器的身份标识,让服务器识别请求来自合法的浏览器客户端X-IG-App-ID:Instagram Web端的固定应用ID,是API校验的核心参数之一Accept:指定接受的响应内容类型,匹配浏览器的默认设置Referer:模拟从Instagram主页发起请求的上下文
可运行代码示例
import requests # 目标API地址 api_url = "https://www.instagram.com/api/v1/users/web_profile_info/?username=kateannedesigns" # 复制浏览器中的关键请求头(可根据你的浏览器实际请求头调整) request_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-IG-App-ID": "936619743392459", # Web端Instagram通用的App ID,若失效可从浏览器请求头中提取 "Accept": "*/*", "Referer": "https://www.instagram.com/" } # 发起请求 response = requests.get(api_url, headers=request_headers) # 处理响应 if response.status_code == 200: profile_data = response.json() print(profile_data) else: print(f"请求失败,状态码:{response.status_code},响应内容:{response.text}")
额外注意事项
- 如果上述代码仍返回错误,建议打开浏览器开发者工具,复制完整的请求头(除
Cookie外的所有字段)到request_headers中,确保和浏览器请求完全一致 - Instagram的API规则可能随时更新,若后续再次出现400错误,需重新检查浏览器的请求头参数是否有变化
- 不要频繁发起请求,避免触发Instagram的反爬虫机制导致IP被限制
内容的提问来源于stack exchange,提问作者Asad Naqvi
相关产品推荐
相关产品推荐

