代理与无代理验证码识别:该选哪种任务类型?
Scarnox 提供两种形式的 PopularCaptcha:无代理版,Scarnox 在自己的网络中完成验证码识别;代理版,你提供自动化程序使用的代理。两者都以相同的响应格式返回 token,并且识别失败都不收费。请求中唯一的区别就是代理。
对于大多数网站,无代理是合适的起点。只有当网站把 token 绑定到某个 IP 地址时,才需要发送你自己的代理。
两种任务类型
| 任务类型 | 你需要发送的内容 |
|---|---|
PopularCaptchaTaskProxyless | sitekey 和页面 URL |
PopularCaptchaTask(代理版) | sitekey、页面 URL 和你的 proxy |
两者都是 PopularCaptcha 任务。请求的其余部分、响应以及 token 的处理方式完全相同。
从无代理开始
无代理识别在 Scarnox 自己的网络上运行。这是你能写出的最简单的集成方式,而且对于大多数网站,无论之后哪个 IP 提交这个 token,它都是有效的。如果你不确定需要哪一种,请从这里开始:
{
"captcha_type": "PopularCaptchaTaskProxyless",
"site_key": "10000000-ffff-ffff-ffff-000000000001",
"site_url": "https://example.com/signup"
}
当 token 绑定 IP 时发送代理
有些网站会检查,识别验证码的 IP 与提交表单的 IP 是否相同。症状很明显:token 返回时没有任何错误,但网站每次都拒绝它。解决方法是通过你的机器人在整个会话中使用的同一个代理进行识别:
{
"captcha_type": "PopularCaptchaTask",
"site_key": "10000000-ffff-ffff-ffff-000000000001",
"site_url": "https://example.com/signup",
"proxy": "http://user:pass@203.0.113.10:8080"
}
代理格式为 http://user:pass@host:port。识别和提交使用同一个代理,并在整个会话中保持粘性。在识别和提交之间轮换代理,会再次导致 IP 不匹配。
如何决定
按顺序回答以下问题:
- 从另一台机器提交这个 token,它还能用吗?如果能,就用无代理。
- 网站是否只在提交 IP 与识别 IP 不同时拒绝 token?如果是,就发送代理。
- 网站是否使用了与某个 IP 绑定的会话 Cookie 或设备检查?如果是,就发送代理,并在整个会话中保持同一个 IP。
在做决定之前,请在免费试用中两种方式都测试一下。注册账户,免费试用额度,无需信用卡,然后每种类型各运行一次同样的流程。
如果你的代理失效
识别失败不收费。如果代理失效,或者被目标网站封锁,识别会失败,而且你不会为此付费。运行之前请自己先测试代理,检查其格式,并确保目标网站没有封锁它的地址段。能在浏览器中正常使用、却无法完成识别的代理,通常是格式问题。
不要在日志中泄露代理凭据
带密码的代理地址属于机密。请把它存放在环境变量或密钥管理服务中。不要把它打印到日志里,不要提交到代码仓库,也不要粘贴到问题报告中。如果你为了调试而记录识别请求,请先删除 proxy 字段。
为代理版选择代理
识别可以使用你发送的任何代理,但只有同一个 IP 提交表单,token 才有用。请使用你能控制、并在整个会话中保持不变的住宅或静态地址,而不要使用每次请求都轮换的地址池。会把 token 绑定到 IP 的网站,通常也会绑定会话,因此轮换地址池会让流程在两个地方同时出错。
速度如何?
两种版本都通过一次阻塞请求返回 token,都不需要轮询循环。超时时间也相同,约为 185 秒。选择版本时应看 IP 问题,而不是速度。
会话与代理的实际用法
在一个会话的第一次请求到最后一次请求之间,使用同一个代理。典型流程是:加载注册页面、识别验证码、提交表单。如果页面加载走的是一个地址,识别走的是另一个地址,那么对于绑定 IP 的网站,即使其他一切看起来都正确,它也可能拒绝 token。
在代码中保留一个统一的代理设置,并把它传给每一个访问该网站的步骤。如果任务的其他部分为了抓取而轮换代理,请给验证码流程分配它自己的粘性代理。把两者混在一起,是测试时能通过、上线后却失败的 token 最常见的原因之一。
只有使用代理的那个版本才设置 proxy 字段。对无代理任务类型发送代理,不会提升识别效果,而且在阅读日志时,你会更难分辨某次运行使用的是哪种模式。
从日志中找到正确答案
如果你不确定某个网站需要哪种模式,请在同一个页面上两种都运行,然后对比结果。记录每个 token 是否被接受,并同时记录任务类型以及是否发送了代理。如果一个网站持续接受无代理的 token,它就不需要代理版本。如果一个网站只在某些运行中拒绝 token,那就说明存在 IP 检查。让日志来决定,而不是靠猜测。
下一步
免费试用额度,无需信用卡:注册账户,并在同一个页面上试用两种任务类型。