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

Puppeteer/Axios获取的_abck令牌无法用于银行账户登录问题

问题分析与解决方案

为什么会出现这个问题?

_abck是Akamai(主流CDN/反爬服务商)生成的会话验证Cookie,它的有效性和浏览器指纹、会话上下文强绑定:

  • Puppeteer默认启动的Chromium带有明显自动化特征(比如navigator.webdriver属性为true),Akamai反爬系统会识别出这是自动化工具,生成的_abck会被标记为无效,直接拒绝后续登录请求。
  • 哪怕你在Puppeteer启动的Chromium里手动操作,这个会话的初始指纹已经被Akamai标记为可疑,所以生成的_abck依然无法通过验证。
  • Axios直接请求完全没有浏览器环境的JS执行上下文,Akamai不会生成合法的_abck,自然返回403。

如何编程获取可用的_abck?

核心思路是模拟真实用户的浏览器环境和操作路径,绕过Akamai的指纹检测:

1. 消除自动化指纹

使用puppeteer-extra搭配stealth插件,它会自动修改Chromium的多个特征,让浏览器更接近真实用户:

const puppeteer = require('puppeteer-extra');
const StealthPlugin = require('puppeteer-extra-plugin-stealth');
puppeteer.use(StealthPlugin());

同时添加启动参数,彻底禁用自动化标记:

const browser = await puppeteer.launch({
  headless: false, // 先开有头模式排查问题
  args: [
    '--disable-blink-features=AutomationControlled',
    '--start-maximized', // 模拟真实窗口尺寸
    '--no-sandbox' // 部分环境需要,按需添加
  ]
});

2. 模拟真实用户操作路径

不要直接请求登录页,先访问银行首页,等待页面加载完成并执行所有Akamai验证脚本,再逐步操作到登录页:

const page = await browser.newPage();
await page.setViewport({ width: 1920, height: 1080 });

// 先访问首页,等待网络空闲(确保Akamai脚本执行完成)
await page.goto('https://你的银行首页地址', { waitUntil: 'networkidle2' });
// 模拟用户浏览等待
await page.waitForTimeout(3000);

// 点击登录按钮跳转(不要直接goto登录URL)
await page.click('#登录按钮的CSS选择器');
await page.waitForNavigation({ waitUntil: 'networkidle2' });

// 此时获取的_abck就是合法的
const cookies = await page.cookies();
const validAbck = cookies.find(c => c.name === '_abck');

3. 关键注意事项

  • 必须在同一个浏览器会话里完成Cookie获取、登录操作,不要把Cookie导出给Axios单独使用——Akamai会校验会话的其他上下文(比如IP、User-Agent、关联Cookie)。
  • 银行网站可能还有额外验证(比如短信验证码、滑动验证),需要针对性处理,部分场景可能需要手动介入,但务必遵守平台规则。
  • 爬取银行账户数据可能违反用户协议,甚至涉及法律风险,操作前请务必确认相关条款的合法性。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 05:50:28