PerimeterX

  • When you see _px2, _px3 in cookies, it means perimeterx verification exists, with three cases:

    • Sense-only mode (*/api/v2/colletor): Open the target page, no verification appears, f12 keeps sending */api/v2/colletor requests, this mode must pass app_id, href, proxy Verification API

    • Homepage sense + press mode (*/assets/js/bundle): Open the target page, press captcha appears directly, this mode must pass tag, href, proxy Verification API

    • xhr press verification mode (*/assets/js/bundle): Open the target page, no press captcha appears directly, but appears on login, register, or search key APIs, this mode must pass app_id, href, captcha, proxy Verification API Press captcha sample

ps: * Sense-only mode and homepage press mode usually depend on your proxy quality. If you use sense-only mode directly, the _px2, _px3 cookies you get may still trigger homepage press verification mode. If you keep seeing homepage press mode, your proxy cannot use sense-only mode, please switch to homepage press mode. * The _px2, _px3 cookies returned by press mode usually need a few seconds before they can be used normally, using them immediately may still result in 403. * It is recommended to use a proxy to request your target page and check if the status code is 403. If so, your proxy triggers press mode, use homepage sense + press mode parameters. If not (200 or 302 etc.), your proxy triggers sense-only mode, use those parameters.

Request URL (POST):

Version
API URL

Universal

https://wtf.red/api/perimeterx

Request Headers:

Parameter Name
Description
Required

x-api-key

User secret, get from homepage

Yes

Content-Type

application/json

Yes

POST Data (JSON):

Parameter Name
Type
Description
Required

href

String

Page URL that triggers perimeterx verification

Yes

tag

String

Version, tag parameter in */api/v2/colletor or */assets/js/bundle (if not passing tag, must pass app_id)

No

app_id

String

appId parameter in */api/v2/colletor or */assets/js/bundle (starts with PX, if not passing app_id, must pass tag)

No

captcha

Object

Captcha parameter, required for xhr API returned press captcha

No

captcha_html

String

Captcha parameter, response source code of press captcha from href request

No

uuid

String

window._pxUuid

No

vid

String

window._pxVid

No

proxy

String

No need to keep proxy consistent, if passing proxy please use overseas proxy, format: ip:port or usr:pwd@ip:port (contact admin if issues)

No

did

String

Fingerprint ID returned by seamless mode (in extra property), pass this parameter for subsequent press captcha from xhr APIs

No

country

String

Country code of proxy used in business process, e.g. US (us), UK (uk), consult admin for details

No

ip

String

IP address of proxy used in business process (e.g. 56.214.78.94), consult admin for details

No

user_agent

String

Custom user_agent, please pass latest Windows UA

No

cookies

String

Current page cookies in press captcha mode

No

actions

Integer

Random behavior count, higher value takes longer, set higher for high risk control sites, default 1

No

timeout

Integer

Verification timeout

No

json examples

Seamless mode only

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

Seamless + press mode (press captcha appears directly when opening target page)

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

Pure press captcha returned by xhr API

captcha: If the triggered API directly returns json data format, directly pass the returned json data as the captcha parameter, as shown below:

xhr press captcha
{
    "app_id": "PXaOtQIWNf",
    "href": "https://www.chegg.com/auth?action=login&redirect=https%3A%2F%2Fwww.chegg.com%2Ftextbooks%2Fstudent-solutions-manual-chapters-1-11-for-stewart-s-single-variable-calculus-8th-edition-9781305271814-1305271815%3Ftrackid%3D74b04883b359%26strackid%3Db48a54386409%26searchid%3Db06489ae-fb76-4dc5-8d8e-dae3ce250966",
    "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", 
        "altBlockScript": "https://captcha.px-cloud.net/PXaOtQIWNf/captcha.js?a=c&u=bd2deef7-0b95-11ef-8c49-cb4c98cbe205&v=&m=0", 
        "customLogo": "https://chegg-mobile-promotions.cheggcdn.com/px/Chegg-logo-79X22.png"
    },
    "did": "did returned by seamless mode",
    "proxy": "user:pass@ip:port"
}

Response Data (JSON):

Successful Response

Parameter Name
Type
Description

status

Integer

Whether the call was successful, 1 for success, 0 for failure. Use this value to judge

msg

String

Chinese description of the result

id

String

The unique request ID for this particular request (can be used for subsequent record queries)

data.cookies

String

The available _px2, _px3 cookies returned after successful verification, can be used for subsequent verification APIs

cost

String

Verification time taken (in milliseconds)

{
  "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",
        "_pxde": "370c1218665b160f442e1e2b63603a15b046b7831b83de27de7c5211bf102f77:eyJ0aW1lc3RhbXAiOjE3MTE2ODI5NTE5MzZ9"
    }
  }
}

Last updated