action 跟 params 传参即可获取目标业务的接口响应数据akamai、kasada、datadome、shape、perimeterx 等)接入调用较为复杂,而且还有其他的一些防护措施(比方说 ja3、http2 指纹检测),并不是拿到我们接口返回的参数就能成功通过验证,有可能获取到了我们接口返回的参数,但是实际用到目标接口时却返回验证失败,扣了钱却没有获取到想要的数据,解锁器就可以完美解决这个问题,用户不需要管过哪些盾、应该如何接入这些盾、业务流程应该如何写等等,只需要无脑接入解锁器接口,只有获取到了正确的目标接口响应才会扣钱,否则不会扣钱(比方说参数不可用)| 版本 | 接口地址 |
|---|---|
v1 |
http://api.nocaptcha.io/api/wanda/site/unlocker |
| 参数名 | 说明 | 必须 |
|---|---|---|
User-Token |
用户密钥, 主页获取 |
是 |
Content-Type |
application/json |
是 |
Developer-Id |
开发者 ID, 开发者用户使用, 用户主页邀请链接的字符串(如 xxx/register?c=abcdef, 则 abcdef 为开发者 ID) |
否 |
| 参数名 | 类型 | 说明 | 必须 |
|---|---|---|---|
href |
String |
目标业务网站地址:如 https://www.starbucks.com/ |
是 |
action |
String |
接口定义的当前网站的 action |
是 |
params |
Object |
目标接口的传参, 具体咨询管理员 |
是 |
user_agent |
String |
自定义 user_agent, 请传 115 ~ 最新版本的 chrome ua |
否 |
proxy |
String |
无需保持代理一致, 若传代理请使用海外代理, 格式请传 ip:port 或 usr:pwd@ip:port (如果有问题联系管理员) |
否 |
{
"href": "https://www.att.com/",
"action": "order_flow",
"params": {
'imei': 'xxx'
}
}
| 参数名 | 类型 | 说明 |
|---|---|---|
status |
Integer |
调用是否成功, 1 成功, 0 失败, 请使用该值判断 |
msg |
String |
调用结果中文说明 |
id |
String |
该次请求 id(唯一, 可用作后续记录查询) |
data.cookies |
String |
验证通过返回的可用的 _px2、_px3 cookie, 可用于后续验证接口 |
cost |
String |
验证耗时(毫秒) |
{
"status": 1,
"msg": "验证成功",
"en_msg": "Verify success",
"id": "b4f3e37c-78d1-4993-873c-9a0cbe2e48d8",
"cost": "12860.88ms",
"data": {
"error": {
"errorId": "UNLOCK406",
"errorMessage": "Order Flow Validation Failed",
"details": [
{
"code": "ULS_8023"
}
]
}
},
"extra": {}
}
pip install -U pynocaptcha -i https://pypi.python.org/simple
import re
# 访问 www.nocaptcha.io 官网获取 User-Token
# get the User-Token from www.nocaptcha.io
from utils import USER_TOKEN
from pynocaptcha import run_unlocker
result = run_unlocker(user_token=USER_TOKEN, site='www.att.com', action='order_flow', params={
'imei': 'xxx'
})
print(result)
from pynocaptcha import Unlocker, LululemonCheckBalanceParams
unlocker = Unlocker(user_token=USER_TOKEN, timeout=120)
result = unlocker.lululemon_checkbalance(LululemonCheckBalanceParams(
cardNumber='xxxxx',
pin='xxxx'
))
print(result)
import random
from pynocaptcha import Unlocker, PrizepicksLoginParams
unlocker = Unlocker(user_token=USER_TOKEN, timeout=120)
result = unlocker.prizepicks_login(PrizepicksLoginParams(
email=f'jkutz21{random.randint(100, 10000)}@gmail.com',
password=f'Jake8{random.randint(100, 10000)}!'
))
print(result)
from pynocaptcha import Unlocker, WizzairSearchParams, FlightSegment
unlocker = Unlocker(user_token=USER_TOKEN)
result = unlocker.wizzair_search_flights(WizzairSearchParams(
adultCount=1,
childCount=0,
flightList=[
FlightSegment(
arrivalStation="LCA",
departureStation="EVN",
departureDate="2025-10-25T00:00:00",
), FlightSegment(
arrivalStation="EVN",
departureDate="2025-10-27T00:00:00",
departureStation="LCA"
)
],
infantCount=0,
isFlightChange=False,
wdc=True
))
print(result)
# etc.