剧作家无检测指纹浏览器与Scrapeless
Specialist in Anti-Bot Strategies
TL;DR:
- Playwright 通过
chromium.connectOverCDP()连接到任何 CDP 浏览器,因此指向 Scrapeless 只需一个 URL。 将本地的chromium.launch()替换为连接到云浏览器,每个脚本都在干净的身份下运行。 - 本地 Playwright 浏览器在三个方面泄露了自动化信息:
navigator.webdriver标志、无头默认指纹和您自己的出口 IP。反机器人系统会综合评估这三者。 - Scrapeless 爬虫浏览器在服务器端回答了所有三个问题——真正的自研 Chromium、一致的每会话指纹,没有
webdriver的迹象,以及在 195 个国家的住宅出口。 - 您的 Playwright 代码保持不变。
page.goto、page.locator、page.evaluate和等待行为与本地相同;只有连接行移动了。 - 经过验证的实时情况: 一个
connectOverCDP()会话将navigator.webdriver读取为false,并通过 Scrapeless 云浏览器返回目标页面的真实标题。 - 免费开始。 新的 Scrapeless 账户包括免费的爬虫浏览器运行时——请在 app.scrapeless.com 注册。
介绍:将 Playwright 连接到可读取干净信息的浏览器
Playwright 通过一个 API 驱动 Chromium、Firefox 或 WebKit。在您自己的机器上启动 Chromium,每个脚本继承了使自动化显而易见的信号:它通过 navigator.webdriver 属性 自我声明,发送无头默认字体和画布行为,并从声誉服务已知的 IP 退出。
您可以手动修补每一个,但随着 Chromium 和检测器的发展,您需要持续修补。还有更短的路径。Playwright 通过 chromium.connectOverCDP() 附加到任何暴露 DevTools 端点的浏览器,而 Scrapeless 爬虫浏览器 就是 一个通过 WebSocket URL 访问的 Chrome DevTools 协议 端点。将 Playwright 指向它,指纹、行为表面和出口 IP 移动到服务器端——您的脚本保持不变。
您可以用它做什么
- 针对反机器保护网站运行脚本——云浏览器在渲染期间清除了挑战,因此
page.goto能够获取内容。 - 本地化会话——固定
proxyCountry以便页面按该市场的访客所见的方式进行解析。 - 发送一致的指纹——传递一个
fingerprint对象,以便用户代理、平台、屏幕和时区保持一致。 - 保持登录状态——携带
profileId使得 cookies 和本地存储在多次运行之间保持。 - 超越您的机器进行扩展——会话在云中运行,而不是在您的笔记本电脑上。
- 保持自动化相同——定位器、
page.evaluate、点击和自动等待没有发生变化。
为什么选择 Scrapeless 爬虫浏览器
Scrapeless 爬虫浏览器 是一个可定制的、抗检测的云浏览器,专为网页爬虫和 AI 代理设计。具体针对 Playwright,它提供:
- 真正的自研 Chromium,能够与 Chrome 一样精确运行页面 JavaScript,因此单页应用和挑战能够解决。
- 一致的每会话指纹——没有
navigator.webdriver迹象,没有无头默认泄露。 - 在 195 个以上国家的住宅出口,每个会话选择一个
proxyCountry值。 - 通过
profileId的会话持久性,使得经过身份验证的流程保持其状态。 - 一个连接表面——每个选项都是同一 WebSocket 端点上的查询参数。
在 app.scrapeless.com 免费计划中获取您的 API 密钥。
先决条件
- Node.js 18 或更新版本
- 安装了
playwright-core(无需捆绑浏览器——您连接到远程浏览器) - 一个 Scrapeless 帐户和 API 密钥——在 app.scrapeless.com 注册
完整的连接细节请查看 Scraping Browser 文档。
安装
使用 playwright-core——它跳过浏览器下载,因为 Chromium 位于云中。
bash
npm install playwright-core
export SCRAPELESS_API_KEY=your_api_token_here # 免费密钥在 https://app.scrapeless.com
配置连接
端点是 wss://browser.scrapeless.com/api/v2/browser,每个选项都是一个查询参数。固定 proxyCountry 到一个住宅区域。
javascript
import { URLSearchParams } from "node:url";
function scrapelessEndpoint(extra = {}) {
```javascript
const params = new URLSearchParams({
token: process.env.SCRAPELESS_API_KEY,
sessionTTL: "180", // 秒
proxyCountry: "US",
...extra,
});
return `wss://browser.scrapeless.com/api/v2/browser?${params}`;
}
连接和运行
将 chromium.launch() 替换为 chromium.connectOverCDP() 并传递端点。之后的所有内容都是标准 Playwright。
javascript
import { chromium } from "playwright-core";
import { URLSearchParams } from "node:url";
const params = new URLSearchParams({
token: process.env.SCRAPELESS_API_KEY,
sessionTTL: "180",
proxyCountry: "US",
});
const endpoint = `wss://browser.scrapeless.com/api/v2/browser?${params}`;
const browser = await chromium.connectOverCDP(endpoint);
const page = await browser.newPage();
await page.goto("https://www.scrapeless.com/en", { waitUntil: "domcontentloaded", timeout: 60000 });
console.log("标题:", await page.title());
console.log("navigator.webdriver:", await page.evaluate(() => navigator.webdriver));
await browser.close();
该脚本的实时运行打印了页面标题 Effortless Web Scraping Toolkit - Scrapeless 和 navigator.webdriver: false — 与您已经使用的相同 Playwright API,通过云浏览器获取。
在免费计划中获取您的 API 密钥:app.scrapeless.com
发送一致的指纹
fingerprint 对象保持浏览器的广告身份一致 — 用户代理、平台、屏幕和时区都一致。将其 JSON 编码、URL 编码,并作为一个参数传递。W3C WebDriver 规范 要求符合的自动化暴露 webdriver 标志;云浏览器不会带上它,因此您发送的指纹不会有任何矛盾。
javascript
const fingerprint = {
userAgent: "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/126.0.0.0 Safari/537.36",
platform: "Windows",
screen: { width: 1920, height: 1080 },
localization: { languages: ["en-US", "en"], timezone: "America/New_York" },
};
const endpoint = scrapelessEndpoint({ fingerprint: encodeURIComponent(JSON.stringify(fingerprint)) });
本地 Playwright 的停止点
在您自己的 Chromium 上运行 Playwright 适用于开放、不受保护的页面。当目标访问浏览器时,摩擦就开始了:在数据中心 IP 上停滞的挑战中断页面、指纹化无头默认设置的页面,或希望跨访问保持稳定身份的登录墙。这些都是指纹、行为或 IP 问题 — 正是云浏览器在服务器端处理的三种情况。连接到 Scrapeless 将这些情况交给一个托管会话,而您的定位器和 page 调用保持不变。
您得到的回报
该会话的行为与任何 Playwright 会话相同 — 定位器、page.goto、page.evaluate、自动等待和 cookies 都有效。以下是通过云浏览器运行的几个诚实观察:
navigator.webdriver是false,因此网站运行的第一个检查读起来像是真实的 Chrome。connectOverCDP返回正常的Browser—newPage、上下文和定位器没有变化。- 退出 IP 匹配
proxyCountry— 地理限制页面按本地访问者所见解析。 - 为顽固页面预热会话 — 在受保护页面之前先加载网站的主页,以便行为表面看起来像正常访问。
结论:相同的 Playwright,更干净的浏览器
Playwright 决定做什么;Scrapeless 决定浏览器在网站上的外观。集成仅需一行 — chromium.connectOverCDP() 连接云浏览器 — 其他部分的脚本保持不变。将 proxyCountry 固定为住宅区域,传递一致的 fingerprint,并重新使用 profileId 进行身份验证流程。若想从 Python 运行相同的云浏览器,请参见 Scrapling 生产抓取器指南,并在 Scrapeless 定价页面 上比较计划。
准备构建您的 Playwright 抓取管道吗?
加入我们的社区以声明免费计划,并与构建 Playwright 管道的开发人员联系:Discord · Telegram。
在 app.scrapeless.com 注册以获取免费的 Scraping Browser 运行时,并将 connectOverCDP() 指向您的目标无法指纹识别的云浏览器。
常见问题
问:我需要更改我的 Playwright 代码吗?
不需要。您只需更改浏览器的获取方式——使用 chromium.connectOverCDP(endpoint) 代替 chromium.launch()。此后,每个定位器和 page 调用都是相同的。
问:使用 playwright 还是 playwright-core?
使用 playwright-core。它跳过了浏览器下载,因为您连接到云浏览器而不是启动本地浏览器。
问:connectOverCDP 支持所有三个浏览器引擎吗?
CDP 连接是基于 Chromium 的,这是 Scrapeless 云浏览器所暴露的。将 chromium.connectOverCDP() 指向端点;您的 Chromium 目标脚本无需更改即可运行。
问:我需要代理吗?
不需要。住宅出口已内置——将 proxyCountry 设置为一个地区或 ANY。没有单独的代理需要连接。
问:使用 Playwright 进行网络爬虫合法吗?
访问公开可用的数据通常是被允许的,但规则因管辖权和网站而异。请查阅目标的服务条款,遵守机器人指令,并咨询律师以获取任何敏感信息。
在Scrapeless,我们仅访问公开可用的数据,并严格遵循适用的法律、法规和网站隐私政策。本博客中的内容仅供演示之用,不涉及任何非法或侵权活动。我们对使用本博客或第三方链接中的信息不做任何保证,并免除所有责任。在进行任何抓取活动之前,请咨询您的法律顾问,并审查目标网站的服务条款或获取必要的许可。



