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

使用Instagrapi调用Instagram API时出现JSONDecodeError及错误码1357004问题排查

解决你用Instagrapi爬取Instagram用户信息时的JSONDecodeError问题

先给你明确结论:这大概率不是Instagrapi本身的问题,而是Instagram的反爬机制触发了限制,同时你的请求响应处理环节出现了小状况。我来拆解一下问题,并给你具体的解决方案:

问题根源分析

你收到的响应开头的for (;;);是Instagram专门加的反爬前缀——它会把正常的JSON数据包裹起来,防止普通爬虫直接解析。正常情况下,Instagrapi的底层应该会自动去掉这个前缀再解析JSON,但这次触发了JSONDecodeError,结合响应里的错误码1357004来看,核心原因是Instagram已经把你的请求判定为异常行为,拒绝了正常数据返回。

常见的触发原因有这几个:

  • 短时间内连续调用多个接口(你一次调用了get_user_id、get_bio、get_follows、get_followers、get_posts,节奏太快),被判定为爬虫;
  • 登录的Instagram账号状态异常(比如新注册未验证、异地登录、有违规记录),导致API权限被限制;
  • 你的Instagrapi版本过旧,请求签名、头信息跟不上Instagram的最新规则,被拦截。

具体解决方案

1. 给请求添加合理延迟,模拟真人操作

Instagram对请求频率管控很严,你需要在接口调用之间加入延迟,避免触发频率限制。修改你的函数:

import time

def parse_one_user(client: InstClient, user: str):
    try:
        print('one user parse started!')
        data = []
        target_user = user.strip()
        print(f'user : {target_user}')
        
        userid = client.get_user_id(target_user)
        print(f"{target_user} userid: {userid}")
        time.sleep(2)  # 第一次短延迟
        
        bio = client.get_bio(userid)
        print(bio)
        time.sleep(3)  # 调用关系类接口前延迟更长
        
        follows = client.get_follows(userid)
        print(follows)
        time.sleep(3)
        
        followers = client.get_followers(userid)
        print(followers)
        time.sleep(3)
        
        posts = client.get_posts(userid)
        print(posts)
        
        data.extend([bio, follows, followers, posts])
        return data
    except Exception as e:
        print(f"Error occurred: {e}")
        return False

2. 检查并修复账号状态

用浏览器手动登录你的Instagram账号,看看是否有验证提示(邮箱/手机号验证、人机验证),如果有,完成验证确保账号处于正常可用状态。另外,避免用新注册的账号批量爬取,老账号的权限会更稳定。

3. 更新Instagrapi到最新版本

Instagram会频繁更新API规则,旧版本的Instagrapi可能会出现兼容性问题。运行以下命令升级:

pip install --upgrade instagrapi

4. 可选:使用代理IP规避IP限制

如果你的IP已经被Instagram标记,可以尝试使用代理IP。Instagrapi设置代理的方式如下:

from instagrapi import Client

client = Client()
# 设置HTTP/HTTPS代理
client.set_proxy("http://your-proxy-address:port")
# 登录
client.login("your-username", "your-password")

总结

这个错误本质是Instagram的反爬拦截,而非Instagrapi的bug。通过调整请求节奏、更新库、确保账号正常这几个步骤,基本能解决问题。如果还是不行,可以尝试减少单次请求的数据量,比如分开爬取关注者和帖子,不要一次性调用所有接口。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.29 00:43:19