跳到主要内容
NexCaptcha

解决方案

爬虫遇到验证码:识别接口怎么接

爬虫被验证码打断时,通常不是代理不够,而是缺一个能稳定回传 token 的识别环节。给出 Scrapy 与 requests 的接入写法和重试策略。

适合谁

写爬虫的 Python、Node 工程师,以及采集服务商的数据平台团队。日常时间花在维护解析规则、轮换 proxy、盯队列深度上,验证码本来不在排期里。采集任务多数是 Scrapy 或 Playwright 集群定时跑,产出的数据第二天早上要有人用。

要解决的问题

10 万页量级上,原本跑得很稳的爬虫开始返回 Turnstile 和 Cloudflare 5秒盾页面。瓶颈从带宽变成验证码吞吐,队列堆积,重试把 proxy 预算烧掉,定时任务错过窗口。等有人发现时,数仓里已经是残缺的一天。

  • 定时采集在窗口内跑完
  • 重试预算不再消耗在验证码页面上
  • Turnstile、reCAPTCHA、DataDome 走同一个接口
  • 识别失败不计费,跑空的批次不额外花钱

配合使用

  • Scrapy
  • Playwright
  • Puppeteer
  • httpx
  • curl_cffi
  • Colly
  • Apify
  • Airflow

[ 04 ]关于这一项的常见问题

关于这一项的常见问题

多数题型不用。传 sitekey 和页面 URL 就能拿到 token,跟表单一起提交即可。只有回传 cookie 而不是表单 token 的场景,比如 Cloudflare 5秒盾,才需要浏览器配合。

看响应体和响应头的特征:cf-turnstile 容器、带 data-sitekey 的 g-recaptcha 容器、带 DataDome cookie 的 403。每个题型页都列出了对应的识别标志。

并发按账号设置,不按题型分配,可在控制台调整。超出上限时接口把任务排队,不会直接拒绝,突发流量不会丢任务。

不扣。没有回传 token 的任务不计费,成本按成功识别次数算,不按请求次数算。

第一千次识别,我们请。

创建密钥,粘进上面的示例代码,看着真实的 token 返回。不用绑卡,没有销售电话。