如何无需服务器/Redirect URI用API读取自有Instagram企业账号私信?
解决方案:无需服务器读取Instagram企业号私信 + 绕过第三方库登录拦截
一、不用服务器/Redirect URI获取Graph API权限的方法
Facebook Graph API有针对个人测试的简化流程,完全不需要部署服务器,步骤如下:
- 进入Facebook开发者后台,创建一个测试应用(选择Instagram Business类型)
- 在应用的「产品」模块添加「Instagram Graph API」,进入「基本设置」
- 找到「用户令牌生成器」,选中你的Instagram企业账号,勾选
instagram_basic、pages_show_list、instagram_manage_messages三个核心权限 - 点击「生成令牌」,弹出Instagram授权页面后用你的账号登录授权,就能直接拿到短期用户令牌
- 将短期令牌转换为有效期60天的长期令牌,调用以下API即可:
这里的Redirect URI直接填import requests def get_long_term_token(short_token, app_id, app_secret): api_url = f"https://graph.facebook.com/v18.0/oauth/access_token?grant_type=fb_exchange_token&client_id={app_id}&client_secret={app_secret}&fb_exchange_token={short_token}" res = requests.get(api_url) return res.json()["access_token"]https://localhost即可,不需要实际部署服务器,Facebook会把令牌直接返回给你。
拿到长期令牌后,读取私信的示例代码:
import requests def fetch_instagram_dms(long_token, ig_user_id): api_url = f"https://graph.facebook.com/v18.0/{ig_user_id}/messages?access_token={long_token}" res = requests.get(api_url) return res.json()
二、解决instagrapi/instagram_private_api登录被拦截的问题
第三方库被拦截是因为Instagram的反爬机制,你可以通过以下调整绕过:
- 设置真实浏览器的User-Agent:复制你自己浏览器的User-Agent(可在开发者工具Network面板查看请求头),初始化客户端时配置:
from instagrapi import Client cl = Client() cl.set_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") - 启用双因素认证:先在Instagram账号开启2FA,登录时传入验证码:
cl.login("你的账号", "你的密码", verification_code="2FA验证码") - 添加操作延迟:模拟真实用户行为,登录前加几秒延迟:
import time time.sleep(3) cl.login(...) - 启用会话持久化:第一次登录成功后保存会话,后续直接加载避免重复登录:
# 登录成功后保存会话 cl.dump_settings("session.json") # 下次启动时加载会话 cl.load_settings("session.json") cl.login(...) # 无需重复输入密码,直接用会话验证
三、关键注意事项
- Graph API的长期令牌到期前,可再次调用转换接口续期,无需重新授权
- 第三方库调用的是Instagram私有API,存在账号受限风险,仅用于作业测试,不要高频调用
- 使用Graph API前,确保你的Instagram企业号已绑定对应的Facebook页面(企业号强制要求)
内容的提问来源于stack exchange,提问作者26_ ChirayuAggarwal
相关产品推荐
相关产品推荐

