PerimeterX 验证解决方案详解

简介

PerimeterX 是一种常见的网络安全验证系统,用于保护网站免受自动化攻击和恶意爬虫。当您在网页浏览过程中看到 cookies 中包含 _px2_px3 时,表明该网站正在使用 PerimeterX 验证。本文将详细介绍如何有效处理 PerimeterX 验证。

详情请见:解决验证码 recaptcha、cloudflare、incapsula

验证模式说明

PerimeterX 验证主要有以下几种情况:

  1. 无感模式:用户无需交互,系统在后台完成验证
  2. 按压模式:需要用户完成交互式验证
  3. 混合模式:根据风险评估可能先尝试无感模式,失败后转为按压模式

注意事项

  • 无感模式与按压模式的触发通常取决于您使用的代理质量
  • 按压模式返回的 cookies 通常需要几秒钟才能正常使用
  • 建议先测试目标页面的状态码:403 表示触发按压模式,200/302 表示无感模式可能有效

技术参数详解

请求参数说明

请求 PerimeterX 验证解决方案时,需要提供以下关键参数:

参数名类型说明必须
hrefString触发验证的页面地址
tagString版本号,从验证脚本中获取否*
app_idString应用ID,通常以PX开头否*
captchaObject验证码参数(按压模式必传)
proxyString代理服务器地址
user_agentString自定义用户代理

*注:tagapp_id 至少需要提供一个

响应数据结构

成功处理验证后,系统将返回以下数据:

{
  "status": 1,
  "msg": "验证成功",
  "id": "639e056b-49bd-4895-94ab-68d59e00873e",
  "cost": "2635.12ms",
  "data": {
    "cookies": {
      "_px3": "eb9fb4aab8cbd8d9c7018d0928bdccd972ef2a879383dec6b8999bca90ef4fdd:0r5KU/5t6VOMgwq7DnwmGd246hJVZbhPeI72OXfd8QSyRuK1hBRSBog3nrfQah8dLHd5X7cJZJnydq09AginIw==:1000:7eMdz1/BzkA4xQ8/rxujv5jsju6W1PbCAAp+gNDX8fox23jXH2mvzBzg0IwYLDX576aAHr3TeWqHFWvutnqxAKgTSIyR8cutzM7CG6zHQSV0N8piaWjjXlozbaWh77V3BGC7EZ/e3Rj3cbhl9Z4bufg6/87I91c7vv3Ka4ewGi+9EkKABRSCjAs4wEJYu6SneH1ZiiQAWVRW/EAULvFKJpxC07/qpxYuCblvaPljf14=",
      "_pxde": "9a14782e5832ac4ba515c98e3e9f6b6e7b2e3d8ecb36320e659f85bb4f7359ac:eyJ0aW1lc3RhbXAiOjE3MTE2ODA3MDcyNzd9",
      "pxcts": "48247186-ed77-11ee-8c23-8bccbc7b0e91",
      "_pxvid": "bcc357c3-ed78-11ee-aaf0-a24906ed7b54"
    }
  }
}

使用场景示例

仅无感模式

适用于高质量代理或风险较低的情况:

{
    "app_id": "PXu6b0qd2S",
    "href": "https://www.example.com/",
    "proxy": "user:pass@ip:port"
}

无感+按压模式

适用于直接弹出按压验证码的情况:

{
    "tag": "v8.6.6",
    "href": "https://www.example.com/",
    "proxy": "user:pass@ip:port"
}

XHR接口返回的按压验证码

当接口直接返回JSON格式的验证码数据时:

{
    "app_id": "PXaOtQIWNf",
    "href": "https://www.example.com/auth",
    "captcha": {
        "appId": "PXaOtQIWNf",
        "jsClientSrc": "/aOtQIWNf/init.js", 
        "firstPartyEnabled": true, 
        "uuid": "bd2deef7-0b95-11ef-8c49-cb4c98cbe205", 
        "hostUrl": "/aOtQIWNf/xhr", 
        "blockScript": "/aOtQIWNf/captcha/captcha.js?a=c&u=bd2deef7-0b95-11ef-8c49-cb4c98cbe205&v=&m=0"
    },
    "did": "无感模式返回的did值",
    "proxy": "user:pass@ip:port"
}

代码实现示例

以下是使用Python处理PerimeterX验证的示例:

from pynocaptcha import PerimeterxUniversalCracker

# 创建验证解决器实例
cracker = PerimeterxUniversalCracker(
    user_token="您的用户令牌",
    app_id="PXu6b0qd2S",
    href="https://www.example.com/",
    captcha={
        "redirectUrl": "/blocked?url=Lw==&uuid=40f6c510-eb71-11ee-9952-619a9b96c881&vid=418e19e7-eb71-11ee-8541-88227401c984&g=b",
        "appId": "PXu6b0qd2S",
        "jsClientSrc": "/px/PXu6b0qd2S/init.js",
        "firstPartyEnabled": True,
        "vid": "418e19e7-eb71-11ee-8541-88227401c984",
        "uuid": "40f6c510-eb71-11ee-9952-619a9b96c881",
        "hostUrl": "/px/PXu6b0qd2S/xhr",
        "blockScript": "/px/PXu6b0qd2S/captcha/captcha.js?a=c&m=0&u=40f6c510-eb71-11ee-9952-619a9b96c881&v=418e19e7-eb71-11ee-8541-88227401c984&g=b",
    },
    proxy="user:pass@ip:port",
    debug=True,
)

# 执行验证破解
result = cracker.crack()
print(result)

最佳实践建议

  1. 代理选择:使用高质量的海外代理可以降低触发按压验证的概率
  2. 参数获取:通过浏览器开发者工具分析网页请求,准确获取app_idtag等关键参数
  3. 验证流程:先测试目标页面响应状态,根据结果选择适合的验证模式
  4. Cookie管理:获取验证通过的cookies后,建议等待几秒再使用,以确保有效性

通过以上方法,您可以有效处理各种PerimeterX验证场景,提高自动化访问的成功率。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值