开发JavaScript机器人:如何通过sessionid和csrftoken Cookie登录Instagram?
Instagram的会话认证依赖多个Cookie字段,直接复用已登录浏览器的Cookie,能绕过手动生成token的登录环节,更稳定地实现私信访问。
核心Cookie字段
你需要从已登录浏览器中提取以下关键Cookie:
sessionid: 维持登录状态的核心会话标识csrftoken: POST请求必需的CSRF验证令牌ds_user_id: 当前登录用户的IDig_did: 设备标识,部分请求会校验该字段
提取Cookie的步骤
- 在浏览器登录Instagram,按下F12打开开发者工具
- 切换到「Application」标签,找到「Cookies」分类下的
https://www.instagram.com - 复制上述四个Cookie的键值对
在JavaScript请求中携带Cookie
以fetch和axios为例,配置请求时带上Cookie和必要请求头:
fetch示例
const cookieStr = 'sessionid=你的sessionid值; csrftoken=你的csrftoken值; ds_user_id=你的用户ID; ig_did=你的设备ID;'; const requestConfig = { method: 'GET', 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': '你的csrftoken值', 'X-IG-App-ID': '936619743392459', 'Cookie': cookieStr }, credentials: 'include' }; // 请求私信列表 fetch('https://www.instagram.com/api/v1/direct/inbox/', requestConfig) .then(res => res.json()) .then(data => console.log(data)) .catch(err => console.error(err));
axios示例
const axios = require('axios'); const cookieStr = 'sessionid=你的sessionid值; csrftoken=你的csrftoken值; ds_user_id=你的用户ID; ig_did=你的设备ID;'; axios.get('https://www.instagram.com/api/v1/direct/inbox/', { 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': '你的csrftoken值', 'X-IG-App-ID': '936619743392459', 'Cookie': cookieStr }, withCredentials: true }) .then(res => console.log(res.data)) .catch(err => console.error(err));
注意事项
- Cookie会过期:sessionid有有效期,需要定期从浏览器重新提取更新
- 模拟真实请求:必须带上和浏览器一致的
User-Agent,否则容易被反爬机制拦截 - 控制请求频率:频繁请求会触发Instagram的限制,导致Cookie失效
- 不要硬编码Cookie:建议将Cookie存到环境变量或配置文件,避免泄露
手动生成token登录失败的原因
Instagram登录流程会校验设备指纹、IP、请求头特征等多个维度,仅靠session和CSRF token无法通过完整校验,复用浏览器Cookie相当于继承了完整的会话上下文,成功率更高。
内容的提问来源于stack exchange,提问作者Gaurav K
相关产品推荐
相关产品推荐

