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

使用Node.js和Puppeteer的Instagram登录Bot遇CSRF令牌错误的解决方法

解决Instagram登录Bot的“CSRF token missing or incorrect”错误

出现这个错误的核心原因是Instagram登录表单需要携带自动生成的CSRF令牌(csrfmiddlewaretoken),直接点击按钮可能因为页面交互未就绪、令牌未正确加载或提交时未携带令牌导致失败。以下是具体解决方法和修改后的代码:

关键修复点

  • 确保等待CSRF令牌元素加载完成后再进行后续操作
  • 模拟真实用户输入速度,避免触发反爬机制
  • 通过表单提交代替直接点击按钮,确保令牌被正确携带
  • 等待登录请求完成后再关闭浏览器

修改后的代码示例

const browser = await puppeteer.launch({
    headless: false,
});
const page = await browser.newPage();

await page.setUserAgent("Mozilla/5.0 (X11; CrOS x86_64 10066.0.0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/109.0.0.0 Safari/537.36");

// 加载登录页,等待页面完全加载
await page.goto('https://www.instagram.com/accounts/login/', { waitUntil: 'load' });

// 等待CSRF令牌和账号输入框加载完成
await page.waitForSelector('input[name="csrfmiddlewaretoken"]', { timeout: 100000 });
await page.waitForSelector(cnf.username_field, { timeout: 100000 });

await page.screenshot({ path: `screenshots/1.jpeg` }); 

// 模拟真实用户输入速度输入账号密码
await page.type(cnf.username_field, cnf.username, { delay: 100 });
await page.type(cnf.password_field, cnf.password, { delay: 100 });

await page.screenshot({ path: `screenshots/2.jpeg` });

// 通过提交表单确保携带CSRF令牌
await page.evaluate(() => {
    document.querySelector('form').submit();
});

// 等待登录跳转完成后再关闭浏览器
await page.waitForNavigation({ waitUntil: 'networkidle2' });
await browser.close();

额外注意事项

  • 若仍有问题,检查你的选择器(cnf.username_field、cnf.password_field)是否准确指向表单元素
  • 避免短时间内重复登录,Instagram的反爬机制会拦截频繁的自动化请求
  • 可以尝试保留浏览器会话(比如使用userDataDir配置),减少每次登录的验证压力

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 12:15:42