Pr0t0ns/PerimeterX-Reverse
GitHub: Pr0t0ns/PerimeterX-Reverse
该项目是一项对 PerimeterX 反机器人验证挑战的逆向工程研究,记录了从分析混淆脚本到破解加密 payload 以实现纯请求式自动绕过的完整过程。
Stars: 64 | Forks: 7
# PerimeterX-Reverse
https://github.com/Pr0t0ns/PerimeterX-Solver
^ v8.9.6 版本的逆向/破解脚本 ^
*背景信息*
这个仓库将记录我的进展,我将持续尝试对 PerimeterX 的验证挑战进行逆向工程,直到能够生成一个完全自动化、纯请求且无浏览器参与的完美绕过/破解方案。
我计划抓取设备的 WEBGL 指纹,并在需要时生成我自己的 Motion Data。
*如何尽量避免触发这个 PerimeterX 验证码?*
- **使用高质量的 IP 地址** | 低欺诈分数,住宅 IP(最佳)
- **使用未被检测的驱动** | 如果你正在使用 selenium、puppeteer 甚至 playwright 等工具,那么使用一个真正有效的“未被检测”插件来尽量避免被触发是非常重要的(99% 的情况下,这些 antibot 服务非常容易就能判断出你正在使用像 selenium、puppeteer、playwright、phantom 等 webdriver,即使你使用的是“未被检测”的版本。就我个人而言,我建议在尝试绕过验证码时远离这些工具。)
- **未被标记的 TLS** | 确保你的请求不会因为其 TLS 指纹而被标记,这一点很重要。你可以尝试避免这种情况的一种方法是,使用一个允许你修改 TLS 属性的库,例如 TLS_CLIENT,它允许你伪装一些属性,如扩展顺序、支持的 cipher suites 以及一些基本的窗口属性。请注意,这并不总是足以让你避免遇到 antibot 验证挑战。
- **未被标记的 WEBGL/设备指纹** | 如果你试图绕过的 antibot 服务足够优秀,它将会检查一种称为设备哈希/指纹的内容,该内容是根据你访问网站时它能够收集到的属性数据计算出来的。令人惊讶的是,计算出的指纹通常非常独特(大约只有 200,000 台设备中的 1 台会产生相同的哈希值),这使得 antibot 服务很容易判断你的请求是否来自具有相同浏览器属性(仅举几例:CPU、GPU、CanvasFP、屏幕分辨率、屏幕尺寸、User-Agent、浏览器扩展、时区)的客户端。正如你所见,你无法仅靠一个请求库来伪装这些类型的内容,这就是事情变得更加复杂的地方,也是为什么可能需要对 antibot 的加密方法和指纹方法进行逆向工程,以便你能够伪装这些属性。
# 工作原理
**PerimeterX 验证挑战示例**(展示于 ssense.com)

**PX Cookie 由 PerimeterX 脚本设置**

**设置 Cookie 的脚本在 HTML