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

如何绕过Kasada机器人防护?Nike爬虫NodeJS/Puppeteer遇阻求助

绕过Nike的Kasada Bot Mitigation防护问题

我正在开发一款工具,功能是用用户账号登录Nike,导航到最近订单页面爬取信息后发送到Discord Webhook。Nike采用Akamai与Kasada防护,我已找到绕过Akamai的方法,但被Kasada拦截,出现“Error parsing server”错误。尝试过无头浏览器、代理、禁用AutomationControlled等方式均无效,本人为爬虫新手,使用NodeJS和Puppeteer开发,以下是当前代码及报错位置:

const prompt = require("prompt-sync")({ sigint: true });
const fs = require("fs");
const { Webhook, MessageBuilder } = require("discord-webhook-node");

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

/* const proxy = '208.194.232.77:8080';
const username = '3cw7073bgg';
const password = '2c0309ffc2'; */

( async () => {

    // 初始化浏览器
    const browser = await puppeteer.launch({ 
        headless: false, // false = 显示浏览器 | true = 隐藏浏览器
        executablePath: `/Applications/Google Chrome.app/Contents/MacOS/Google Chrome`,
        userDataDir: `/Users/Library/Application Support/Google/Chrome/Default`,
        ignoreDefaultArgs: ['--enable-automation'],
        args: [
            // `--proxy-server=${proxy}`, // 代理配置
            `--disable-blink-features=AutomationControlled`,
            `--enable-blink-feautres=IdleDetection`
        ]
     });

     // 用户输入项
         /*let webhookURL = prompt("输入你的Discord Webhook地址: ");*/
         let accountEmail = prompt("输入你的账号邮箱: ");
         let accountPassword = prompt("输入你的账号密码: ");

     // 打开新标签页
    const page = await browser.newPage();


    // 保存Cookie到本地(注释状态)
     /* const saveCookie = async (page) => {
        const cookies = await page.cookies();
        const cookieJson = JSON.stringify(cookies, null, 2);
        await fs.writeFile('cookies.json', cookieJson)
     }

    
    // 加载本地Cookie(注释状态)
    const loadCookie = async (page) => {
        const cookieJson = await fs.readFile('cookies.json');
        const cookies = JSON.parse(cookieJson);
        await page.setCookie(...cookies);
    } */

    // 浏览器配置
    await page.setUserAgent('Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/107.0.0.0 Safari/537.36');
    await page.setJavaScriptEnabled(true);
    await page.setCacheEnabled(true);
    await page.setBypassCSP(true);
    await page.setViewport({ width: 1920, height: 1080 });
   //  await page.authenticate({ username, password }); // 代理认证
    await page.setDefaultNavigationTimeout(60000); 
    await page.goto("https://www.nike.com/");
        console.log('浏览器已成功打开!');

        // ---------------- 登录流程 ----------------  //

     // 导航到登录页面
        await page.waitForSelector('.nav-btn.p0-sm.d-sm-b.body-4.u-bold.ml2-sm.mr2-sm');
        await page.click('.nav-btn.p0-sm.d-sm-b.body-4.u-bold.ml2-sm.mr2-sm');
            console.log("正在跳转至登录页面...")


    // 输入账号邮箱
    await page.waitForSelector('#username');
    await page.click("#username", { delay: 500 });
        console.log("正在输入邮箱地址...");
    await page.keyboard.type(`${accountEmail}`, { delay: 750 });
        console.log('账号邮箱已输入!');
    await page.waitForSelector('.css-14l6ovh.btn-primary-dark.btn-lg')
    await page.keyboard.press("Enter", { delay: 30000 }); // <= 此处等待服务器响应后报错
})();

针对Kasada防护的优化建议:

  • 修复代码拼写错误:启动参数中的--enable-blink-feautres是拼写错误,正确应为--enable-blink-features,错误配置会导致IdleDetection功能失效,增加被检测概率。
  • 调整浏览器启动参数:
    • 移除userDataDir对默认Chrome目录的引用,改用独立的用户数据目录(如./chrome-profile),共享浏览器数据容易被识别。
    • 添加--no-sandbox、--disable-setuid-sandbox(开发环境可用,生产环境需注意安全)。
    • 补充--disable-web-security、--disable-features=VizDisplayCompositor参数,减少自动化特征暴露。
  • 优化交互逻辑:
    • 不要直接用回车提交表单,模拟真实用户点击登录按钮:await page.click('.css-14l6ovh.btn-primary-dark.btn-lg', {delay: 1000})。
    • 在操作间增加随机延迟,比如await page.waitForTimeout(Math.random() * 2000 + 1000),模拟人类操作节奏。
  • 强化浏览器混淆:
    • 确保puppeteer-extra-plugin-stealth是最新版本,旧版本特征已被Kasada识别。
    • 在页面加载前注入脚本手动修改navigator.webdriver:
      await page.evaluateOnNewDocument(() => {
          Object.defineProperty(navigator, 'webdriver', { get: () => undefined });
      });
      
  • 代理使用优化:
    • 放弃公开免费代理,改用高质量住宅代理,且每个会话更换独立IP。
    • 确保代理配置完整的请求头(如X-Forwarded-For、Via),避免代理特征暴露。
  • 减少登录环节检测:
    • 手动登录一次目标账号,保存有效会话Cookie,后续直接加载Cookie跳过登录流程。
    • 控制脚本运行频率,避免频繁请求触发防护机制。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 08:50:42