Comparisons

基于令牌与基于 Cookie 的验证码解决

验证码解决方案有两种形式:注入表单提交的令牌,以及授予会话级访问权限的cookie。选择正确的方法取决于您面临的验证码以及目标站点如何验证它。


一目了然

方面 基于代币 基于cookie
输出 字符串标记(500+ 个字符) 浏览器 cookie(qa_session_cookie 等)
用于 reCAPTCHA v2/v3、hCaptcha、Turnstile Cloudflare 验证流程 页
如何使用 注入表单字段或 POST 正文 与后续 HTTP 请求一起发送
寿命 60-120秒 30分钟至24小时
可重复使用的 无(一次性使用) 是(在会话期间)
需要浏览器 仅用于提取 用于解决(需要完整的浏览器)

基于令牌的解决方案

它是如何运作的

  1. 从页面中提取 sitekey
  2. 提交 sitekey + 页面 URL 至 CaptchaAI
  3. 接收令牌字符串
  4. 将token 提交隐藏表单字段
  5. 提交表格

哪些验证码使用令牌

  • reCAPTCHA v2:令牌进入 g-recaptcha-response 文本区域
  • reCAPTCHA v3:相同字段,但还需要 action(Enterprise sitekey 还需 enterprise=1
  • hCaptcha:令牌进入 h-captcha-response
  • Turnstile:代币进入 cf-turnstile-response

执行

import requests
import time

API_KEY = "YOUR_API_KEY"

# 1. Solve
resp = requests.post("https://ocr.captchaai.com/in.php", data={
    "key": API_KEY,
    "method": "userrecaptcha",
    "googlekey": "6Le-wvkSAAAAAPBMR...",
    "pageurl": "https://staging.example.com/qa-login",
    "json": "1",
}).json()
task_id = resp["request"]

# 2. Poll
token = None
for _ in range(24):
    time.sleep(5)
    result = requests.get("https://ocr.captchaai.com/res.php", params={
        "key": API_KEY, "action": "get", "id": task_id, "json": "1"
    }).json()
    if result["status"] == 1:
        token = result["request"]
        break

# 3. Submit form with token (no browser needed)
form_response = requests.post("https://staging.example.com/qa-login", data={
    "email": "user@example.com",
    "password": "password",
    "g-recaptcha-response": token,
})

主要特点

  • 无需浏览器提交:您可以将令牌直接注入到 HTTP POST 请求中
  • 短暂:代币在 60-120 秒内过期 — 立即解决并使用
  • 单次使用:每个代币只能使用一次;再次解决每个表单提交的问题
  • 服务器端验证:目标站点将令牌发送到Google/Cloudflare/hCaptcha进行验证

它是如何运作的

  1. 提供挑战页面(Cloudflare 验证流程,JS 挑战)
  2. 浏览器解决了这个挑战(内部可能涉及 Turnstile)
  3. 服务器设置会话 cookie (qa_session_cookie)
  4. 使用该 cookie 的所有后续请求都会跳过挑战
  • Cloudflare 验证流程 页面qa_session_cookie cookie
  • JS 挑战:Cloudflare 仅 JavaScript 挑战
  • 一些 WAF 挑战:各种 Web 应用程序防火墙

执行

from selenium import webdriver
import requests
import time

# 1. Solve the challenge in a browser
driver = webdriver.Chrome()
driver.get("https://example.com/protected")

# Wait for challenge to complete (manually or with CaptchaAI)
time.sleep(10)  # Or use CaptchaAI token 提交

# 2. Extract cookies from browser
cookies = driver.get_cookies()
qa_session_cookie = next(
    (c for c in cookies if c["name"] == "qa_session_cookie"), None
)
user_agent = driver.execute_script("return navigator.userAgent")
driver.quit()

# 3. Use cookies for subsequent requests (no browser needed)
session = requests.Session()
session.headers.update({"User-Agent": user_agent})

for cookie in cookies:
    session.cookies.set(cookie["name"], cookie["value"])

# All requests now pass the challenge
for page in range(1, 50):
    resp = session.get(f"https://example.com/api/data?page={page}")
    print(f"Page {page}: {resp.status_code}")

主要特点

  • 解决所需的浏览器:挑战需要完整的浏览器环境
  • 寿命长:Cookie 可持续 30 分钟至 24 小时
  • 可重复使用:一个解决方案授予对多个请求的访问权限
  • IP 绑定:cookie 与解决挑战的 IP 绑定
  • UA-bound:用户代理必须与求解过程中使用的用户代理相匹配

何时使用哪个

设想 方法 为什么
使用 reCAPTCHA 登录表单 代币 提交带有表单数据的令牌
抓取受 Cloudflare 保护的网站 曲奇饼 一次解决,多个页面请求
使用 Turnstile 提交表格 代币 注入cf-turnstile-response
访问 Cloudflare 背后的 API 曲奇饼 对所有 API 调用重用 cookie
提交多个表格 令牌(每次) 每个表单都需要一个新的令牌
批量抓取同一个域 曲奇饼 解决一次,刮至cookie过期

混合方法

有些网站同时使用这两种方式: Cloudflare 验证流程 页面 (cookie) 保护具有 reCAPTCHA(令牌)的表单。

# Step 1: Get past Cloudflare (cookie)
session = get_qa_session_cookie_session("https://example.com")

# Step 2: Load the form (using the cookie session)
html = session.get("https://example.com/submit").text
sitekey = extract_sitekey(html)

# Step 3: Solve reCAPTCHA (token)
token = solve_recaptcha(sitekey, "https://example.com/submit")

# Step 4: Submit form (cookie + token)
resp = session.post("https://example.com/submit", data={
    "data": "value",
    "g-recaptcha-response": token,
})

对比总结

特征 代币 曲奇饼
解决成本 每次提交表格 每会话(摊销)
求解时间 每个令牌 10-30 秒 10-30秒一次
每次解决的请求数 1 很多(直到过期)
知识产权灵活性 令牌可在任何 IP 上使用 Cookie绑定解析IP
使用浏览器 不需要 不需要(只需 cookie)
到期风险 60-120秒 30 分钟 - 24 小时

常问问题

不会。该方法取决于网站的验证方式。 reCAPTCHA 始终使用令牌; Cloudflare 验证流程 始终使用 cookie。

对于大批量刮擦哪个更便宜?

如果可用的话,基于 Cookie 的价格要便宜得多。一次解决可以涵盖数千个请求。基于令牌需要每次提交表单时进行解决。

CaptchaAI 两者都能处理吗?

是的。基于令牌的验证码返回令牌字符串。对于 Cloudflare 验证流程 页面,您可以使用 Turnstile 求解器来获取完成挑战所需的令牌,然后提取生成的 cookie。


使用 CaptchaAI 解决验证码

获取您的 API 密钥:验证码网站


相关指南

该文章已禁用评论。