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

使用Puppeteer登录Nike站点被反爬拦截,如何定位检测规则?

识别Nike官网Puppeteer检测规则的可用方法

我尝试使用Puppeteer登录Nike官网,大概率因反爬虫机制触发报错,我已经尝试了部分规避检测的方案但未生效,以下是我的实现代码:

//const puppeteer = require('puppeteer');
const puppeteer = require("puppeteer-extra");
const pluginStealth = require("puppeteer-extra-plugin-stealth");
puppeteer.use(pluginStealth());

//Create Sleep function to use in Async/Await function
function sleep(ms) {
    return new Promise(resolve => setTimeout(resolve, ms));
 }

 const randomDelay = (min, max) =>
  Math.floor(Math.random() * (max - min + 1) + min);
  
(async () => {

  await sleep(1000);

  var browser;

  browser = await puppeteer.launch({
    executablePath: 'C:/Program Files/Google/Chrome/Application/chrome.exe',
    headless: false,
    args: ['--no-sandbox', '--disable-setuid-sandbox', '--disable-web-security'],
  });

  const page = await browser.newPage();
  await page.setUserAgent(
    'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.181 Safari/537.36',
  );
  await page.setExtraHTTPHeaders({
    'Accept-Language': 'en-GB,en-US;q=0.9,en;q=0.8',
  });
  await page.goto('https://www.nike.com/us/en_us/e/nike-plus-membership', {
    waitUntil: 'networkidle0',
  });


    const emailSelector = '.nike-unite-text-input.emailAddress input';
    await page.waitFor(emailSelector);
    await page.waitFor(randomDelay(300, 600));

    const inputs = [emailSelector, '.nike-unite-text-input.password input'];

          await page.type(inputs[0], 'xyz@gmail.com', {
            delay: randomDelay(200, 300),
          });
      
          await page.waitFor(randomDelay(300, 600));
          await page.type(inputs[1], 'XYZDEFEWD!"', {
            delay: randomDelay(200, 300),
          });
      
          const submitBtn = '.nike-unite-submit-button.loginSubmit input';

          await page.waitFor(randomDelay(200, 500));

          await page.click(submitBtn);

})();
  • 指纹属性对比排查
    分别用正常本地Chrome、当前Puppeteer启动的Chrome访问Nike站点,在控制台导出navigator、window、document对象的全量属性,逐一对比差异。通常不一致的属性就是反爬的检测点,常见的检测属性包括navigator.webdriver、navigator.plugins长度、navigator.languages、chrome.runtime是否存在、屏幕分辨率与视口比例是否匹配等。你可以写个简单的遍历脚本自动对比两个环境的属性差,能快速缩小检测范围。
  • 反爬脚本静态分析
    开启Puppeteer的请求拦截功能,拦截站点加载的所有JS资源,重点筛选体积较大、名字带akamai(Nike使用Akamai反爬服务)的脚本文件,把内容导出后搜索关键词:webdriver、automation、headless、cdc_、puppeteer、selenium,就能快速定位到检测逻辑的代码位置。
  • 动态Hook定位检测逻辑
    在页面加载任何站点脚本之前,提前注入Hook代码,监听所有可能的检测操作。比如Hook Object.defineProperty、Object.getOwnPropertyDescriptor等方法,只要有脚本读取/修改可疑的自动化相关属性,就直接打印调用栈,就能精准定位到执行检测的具体代码行,拿到完整检测规则。
  • 变量控制法逐一验证
    每次只修改一个可能的检测点,运行测试看是否能通过校验,逐步排除所有触发拦截的原因。你当前代码里几个明显的可疑点可以优先验证:
  • 当前设置的UA是Chrome 65版本,版本过于老旧,和你本地启动的Chrome版本大概率不匹配,直接会被标记
  • 启动参数加了--disable-web-security,正常用户浏览不会携带该参数,属于高风险特征
  • 点击操作直接触发元素点击,没有模拟前置的鼠标移动过程,点击位置也没有随机偏移,行为特征过于规整
  • 输入的延迟范围虽然是随机的,但可以进一步增加模拟真实用户的输入错误、回删修正的行为

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.09 04:30:02