反爬虫绕过工具链

工具升级路径

curl  ──(被拦截)──→  Playwright  ──(被拦截)──→  真实 Chrome + CDP

逐级升级,能用简单工具就不上复杂方案。

各级工具对比

工具优点局限被拦截特征
curl / wget最快、可脚本化、无依赖无 JS 执行,UA/TLS 指纹明显403、HTML 错误页、空响应
Playwright / Puppeteer真实渲染、可交互navigator.webdriver=true,自动化 TLS 指纹Akamai / Cloudflare 检测页
真实 Chrome + CDP完全真实浏览器指纹启动慢、不易并发极少被拦

真实 Chrome + CDP 方法

适用于被 Akamai Bot Manager、Cloudflare Turnstile 等高级反爬拦截的场景。

1. 启动 Chrome

/Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome \
  --remote-debugging-port=9222 \
  --disable-blink-features=AutomationControlled

2. 通过 playwright-core 连接

const { chromium } = require('playwright-core');
const browser = await chromium.connectOverCDP('http://127.0.0.1:9222');
const context = browser.contexts()[0];
const page = context.pages()[0];

3. 在浏览器上下文内下载文件

利用浏览器自身的网络栈(带 cookies、TLS 指纹等),绕过服务端检测:

const bytes = await page.evaluate(async (url) => {
  const r = await fetch(url);
  return Array.from(new Uint8Array(await r.arrayBuffer()));
}, targetUrl);
 
require('fs').writeFileSync(filePath, Buffer.from(bytes));

关键点:fetch 在页面上下文执行,走的是浏览器真实网络栈,不是 Node.js 侧发起的请求。

实测记录

站点curlPlaywright真实 Chrome + CDP
HKEX 披露易
巨潮资讯
NASDAQ IR(京东/拼多多/蔚来)❌ Akamai
SEC EDGAR❌ 403✅ (需 UA)

遇到新站点时补充此表。