首页 / 资讯中心 / 文章详情

Cloudflare、DataDome与Kasada如何抓机器人?invisible_playwright反检测机制对照解析

Cloudflare、DataDome与Kasada如何抓机器人?invisible_playwright反检测机制对照解析 ★ FEATURED ARTICLE
Cloudflare、DataDome与Kasada如何抓机器人invisible_playwright反检测机制对照解析【免费下载链接】invisible_playwrightPlaywright that anti-bots cannot see, so no captchas: same API, anti-detect stealth headless Firefox, undetected fingerprint, bypass bot detection, Python web scraping and browser automation.项目地址: https://gitcode.com/gh_mirrors/in/invisible_playwright用 Playwright 写 Python 网页爬虫时最常见的挫败就是一打开 Cloudflare、DataDome 或 Kasada 保护的站点就弹验证码。invisible_playwright是一个免费开源的反检测隐身浏览器方案它用标准 Playwright API 驱动一个在 C 源码级打补丁的 Firefox把浏览器指纹GPU、Canvas、字体、音频、WebRTC 等约 200 个字段直接写进引擎内部再配合拟人化鼠标轨迹让反机器人系统无处下手。本文对照三大反爬厂商的检测层逐一拆解它的反检测机制到底在回答哪些问题、回答不了哪些问题。一张表看懂三大厂商的检测思路厂商核心机制主要检查项运行位置Cloudflare Bot Management1–99 的机器人评分1 确信是机器99 确信是人类JA3/JA4 TLS 指纹、HTTP/2、JS 探测脚本、机器学习模型、__cf_bmCookie边缘节点 页面内 JSDataDome三层打分网络 → 设备/行为 → Cookie 记忆TLS/HTTP 指纹、Canvas/WebGL/音频/字体、鼠标与击键行为、datadomeCookie页面内 JS 标签Kasada字节码虚拟机 会话内持续刷新的工作量证明PoW令牌navigator.webdriver原生 getter、跨 frame 一致性、异常堆栈比对页面内 VM 脚本三者的共同点都不只看一个信号而是把网络层 浏览器表面 行为轨迹 服务端模型拼在一起。所以改一下 User-Agent 就绕过这种思路在这三家面前基本无效。Cloudflare Bot Management常开的评分引擎 很多人把 Cloudflare 的打勾验证Turnstile和 Bot Management 混为一谈。实际上Turnstile 是网站主动嵌入的可见组件而 Bot Management 是一个几乎对每个请求都常驻运行的评分系统它给流量打一个 1–99 的分网站再决定放行、挑战还是拦截。它的评分来自四个引擎Heuristics启发式对照不断更新的恶意指纹数据库所有套餐都跑JavaScript DetectionsJSD注入一段不可见脚本探测 Canvas/WebGL 渲染与鼠标、点击节奏Machine Learning机器学习官方称它贡献了绝大多数检测输入是请求头、会话特征和浏览器信号Anomaly Detection异常检测按域名流量基线找离群点正在被弃用。值得注意的细节TLS 指纹JA3/JA4只是其中一个输入不是整个分数__cf_bmCookie 会跨请求平滑评分减少误判。也就是说就算你的握手指纹完全干净ML 引擎仍可能在会话层面给你打低分。更完整的解析见项目文档 Cloudflare Bot Management, Explained 和 JA3/JA4 TLS 指纹。DataDome三层防线按请求接触的顺序 ️DataDome 保护了大量零售、旅行和票务站点。它的检测按顺序分三层网络层JS 还没开始跑TLSClientHello里的密码套件、TLS 版本、扩展顺序构成 JA3/JA4 类指纹加上 HTTP/2 帧顺序与 IP/ASN 信誉。DataDome 官方说这个指纹对设备类型、浏览器和操作系统相当稳定且唯一专门抓两类机器人指纹独一无二的 TLS 栈以及自称 Chrome 但握手是别人的伪装者。设备与行为层页面内 JS 标签脚本被放在head最顶部会拦截XMLHttpRequest和fetch采集鼠标移动、击键、操作系统、GPU 等信息并明确针对 Headless Chrome、Puppeteer 和魔改 Selenium 做一致性检查。它的 Device Check 功能采集数百个信号结论是三选一拦截、放行、或升级到可见挑战。会话记忆层Cookie约 128 字节、有效期约一年的加密datadomeCookie 记住上次判定——设备一旦通过验证DataDome 官方表述是记住结果不重复验证。缺 Cookie 或 Cookie 失效默认就轮到Slider 滑块挑战。还有第四重暗线进门之后行为仍然在被打分。鼠标轨迹、滚动速度、点击坐标、打字节奏和停留时间会贯穿整个会话与该站点合法用户的行为模型对比。每次点击都正中靶心、每 500 毫秒跳一次同样的滚动——这种机器般的规律性引擎再真也救不了。详见 DataDome 检测机制解析 与 鼠标动态行为生物识别。Kasada逼你在真浏览器里跑它的代码 Kasada 的客户端脚本不开源以下内容来自公开的反编译分析字节码虚拟机约 449KB 的脚本主体是一个自定义 VM真正的检测逻辑以字节码形式运行不是普通的混淆 JS。Kasada 按自己的节奏轮换字节码所以外部求解器总是解完就过期。宽面探针解码出的字符串显示它探测navigator.webdriver、screen.width、RTCPeerConnection、getBattery和 Canvas 原语并带有一批命名规则如bot606、bot1375_mfsk。引擎完整性检查跨 frame 一致性、navigator.webdriver的 getter 是引擎原生 getter 还是被搬到了实例上以及少见的crash-and-capture手法——故意触发TypeError再比对错误消息和堆栈形状是否与所声称的引擎版本一致。持续刷新的 PoW 令牌会话令牌 每请求令牌会整个会话反复重发。工作量本身被校准得对真浏览器只要几毫秒作用是把令牌与指纹和完整性信号加密绑定——跳过检查算不出有效令牌属于强制自证而非算力税。服务端层Kasada 官网称每周摄入超一万亿数据点、两毫秒内识别异常会话——这部分任何浏览器构建都碰不到。Kasada 官方有一句值得细读其混淆 VM 被设计用来逼攻击者在真实浏览器里运行代码。这句话恰好点出了下一节的关键。详见 Kasada 检测机制解析。invisible_playwright 对照解析它到底回答了哪一层反机器人系统本质上问两个问题而 invisible_playwright 的答案分两层给出问题一这是真浏览器吗引擎层回答。补丁打在 Firefox 的 C 源码上没有 JS shim、没有返回值覆盖因此不存在可被读取的接缝检测项厂商在读它invisible_playwright 如何回答TLS 握手 / JA3/JA4来自真实 Firefox 网络栈不是伪装栈Canvas / WebGL / 音频真实渲染与音频路径产出按种子确定性一致字体 / 键盘布局字体随浏览器打包各平台同一套字面webdrivergetter /toString原生码引擎原生 getter无任何覆盖WebRTC 地址泄露提供单个携带代理出口的合成候选不泄露真 IP约 200 个指纹字段同一份 profile 一次生成各表面互不矛盾伪浏览器通常死在这里问题二背后是真人在操作吗驱动层回答。每次点击、悬停和拖拽都沿贝塞尔曲线走自然路径轨迹形状、钟形速度曲线、二维微抖、过冲频率都从会话种子中抽取而不是硬编码常量硬编码意味着所有会话同一条曲线一次测量、终身识别。相关模块可对照阅读鼠标轨迹形状与节奏_motion.py宏观指针行为静默期、落点分布_behaviour.py事件投递纪律绝对截止时间、迟到即丢弃_pacing.py浏览器启动与种子装配launcher.py、_session.py输入事件走真实输入路径isTrusted为 true 是因为它确实为 true而不是被改写。诚实的边界反检测机制解决不了什么 ⚖️对照三大厂商的机制可以清楚画出边界IP 与 ASN 信誉属于网络路径不属于浏览器。真 Firefox 跑在机房 IP 上第一个包照样带着坏 ASN。Cloudflare 的 ML、DataDome 的每站点模型、Kasada 的万亿数据点都在服务端从不暴露给客户端会话历史__cf_bm与datadomeCookie 存在的意义就是奖励连续性单次全新会话天然吃亏交互式挑战Turnstile 和 DataDome Slider 是访客解的谜题不是浏览器答的指纹本项目不包含、也不售卖任何验证码求解服务行为节奏由驱动脚本决定——这正是它内置拟人化驱动的原因但点得再像人也替代不了干净 IP。想验证自己的会话是否真的隐身可以用 Fingerprint Pro、CreepJS 这类检测台自检典型通过结果如下快速上手两行代码切换隐身浏览器 如果你已经会写 Playwright切换只需两行同步与异步 API 均兼容方法签名不变pip install invisible-playwright python -m invisible_playwright fetch # 一次性下载并校验引擎from invisible_playwright import InvisiblePlaywright with InvisiblePlaywright() as browser: page browser.new_page() page.goto(https://example.com) print(title:, page.title())示例脚本在 examples/basic.py 和 examples/with_proxy.py完整入门见 docs/quickstart.md指纹字段固定pin见 docs/pinning.md更多场景看 官方文档。小结Cloudflare 打的是1–99 分DataDome 守的是三层 Cookie 记忆Kasada 用字节码 VM 逼你在真浏览器里跑它的检查invisible_playwright 的反检测机制回答的是客户端可观测的那一半TLS 握手、Canvas/WebGL/音频、字体、原生 getter、WebRTC 都来自真实引擎与同一份种子 profile无 JS 覆盖、无接缝可读它不承诺骗过服务端评分、不替代干净 IP、不解滑块——把它与住宅代理 人节奏交互组合才是完整的反检测方案。【免费下载链接】invisible_playwrightPlaywright that anti-bots cannot see, so no captchas: same API, anti-detect stealth headless Firefox, undetected fingerprint, bypass bot detection, Python web scraping and browser automation.项目地址: https://gitcode.com/gh_mirrors/in/invisible_playwright创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
阅读完成 · 觉得有帮助?
咨询建站