判断标准只有两条:账单是随页数涨还是随并发涨,目标站点弹的是哪一类验证码。前者决定成本曲线,后者决定可行性。
ScrapingBee 收 URL、返回渲染好的 HTML,代理和渲染都在它那一侧;CaptchaAI 只把验证码识别成 token 交回你的代码。量小、页面杂、不想养基础设施,用前者;要覆盖 GeeTest(极验)这类验证码,或者按次计费的账单开始失控,自己写爬虫再接 CaptchaAI 更划算。
分工:一个交付 HTML,一个交付 token
| 维度 | ScrapingBee | 自建 + CaptchaAI |
|---|---|---|
| 你拿到什么 | 渲染好的 HTML | 可直接提交的 token |
| 你维护什么 | 调用参数 | 浏览器、代理、调度 |
| 计费口径 | 按调用扣额度 | 按线程包月,次数不限 |
| 可观测性 | 只知道成败 | 耗时与成功率进自己的监控 |
验证码覆盖:极验是分水岭
| 类型 | ScrapingBee | 自建 + CaptchaAI |
|---|---|---|
| reCAPTCHA v2 / v3 | ✅ | ✅ |
| Cloudflare Turnstile | ✅ | ✅ |
| GeeTest v3(极验滑块) | ❌ | ✅ |
| BLS CAPTCHA | ❌ | ✅ |
| 图片 / OCR、九宫格 | 有限 | ✅ |
国内站点多用极验(GeeTest)、网易易盾、腾讯防水墙,reCAPTCHA 和 Turnstile 更多出现在出海业务里。CaptchaAI 支持 GeeTest v3,易盾与防水墙不在支持范围内,GeeTest v4 的官方口径是即将支持;CaptchaFox、Friendly Captcha、Lemin 目前都是测试版。reCAPTCHA 的脚本挂在 Google 域名下,境内加载不稳定,排查时先分清是页面没出来还是识别超时。
成本:按额度扣,还是按线程包月
以下数字来自公开定价页与内部观测样本,仅供参考,请在自有环境中实测。
| ScrapingBee 每月额度 | 价格 | 折合单次请求 |
|---|---|---|
| 1,000 | $49 | $0.049 |
| 10,000 | $99 | $0.010 |
| 30,000 | $249 | $0.008 |
额度不等于页数:开启 JavaScript 渲染一次扣 5 个额度,更重的模式一次扣 10–25 个。CaptchaAI 是另一套口径,按并发线程包月:BASIC $15/月(5 线程)、STANDARD $30/月(15 线程)、ADVANCE $90/月(50 线程),套餐内识别次数不限。
每月 10,000 页、约 30% 会弹验证码(3,000 次识别): ScrapingBee 大致 $99–249;自建这侧 BASIC($15/月)就够,加代理约 $50、VPS 约 $20–50,合计 $85–115。量再翻十倍,按次计费线性上涨,线程包月多半只是升一档。
ScrapingBee:一次调用换一份 HTML
import requests
resp = requests.get(
"https://app.scrapingbee.com/api/v1/",
params={
"api_key": "SCRAPINGBEE_KEY",
"url": "https://example.com/data",
"render_js": "true",
},
)
html = resp.text
# Parse HTML here
渲染和代理都省了,代价是过程不透明:哪一步触发了验证码、等了多久,日志里看不到。
自建 + CaptchaAI:token 始终在你手里
import requests
from selenium import webdriver
from selenium.webdriver.common.by import By
# You control the browser
driver = webdriver.Chrome()
driver.get("https://example.com/data")
# Detect CAPTCHA
sitekey = driver.find_element(By.CSS_SELECTOR, "[data-sitekey]").get_attribute("data-sitekey")
# Solve with CaptchaAI
resp = requests.post("https://ocr.captchaai.com/in.php", data={
"key": "YOUR_API_KEY",
"method": "userrecaptcha",
"googlekey": sitekey,
"pageurl": driver.current_url,
"json": 1,
})
# ... poll for result, inject token ...
提交后每 5 秒轮询一次 res.php,拿到 token 写回表单再提交。换来的是识别耗时和成功率都进自己的监控。
混合写法:难的那部分留给自己
def smart_scrape(url, scrapingbee_key, captchaai_key):
"""Use ScrapingBee for simple pages, CaptchaAI for complex ones."""
# Try ScrapingBee first (simpler)
resp = requests.get(
"https://app.scrapingbee.com/api/v1/",
params={"api_key": scrapingbee_key, "url": url},
)
if "captcha" not in resp.text.lower():
return resp.text # No CAPTCHA, use ScrapingBee result
# CAPTCHA detected, use CaptchaAI for full control
return solve_with_captchaai(url, captchaai_key)
新站点先交给 ScrapingBee,命中验证码特征再切自建链路,跑两周就知道哪些站点值得投入。采集范围要限定在你有权访问的数据上——robots 协议、网络安全法与 PIPL 是前提。
常见问题
目标站点都是极验滑块,该选哪条路?
自建 + CaptchaAI。通用抓取 API 对极验(GeeTest)滑块的覆盖有限。CaptchaAI 支持 GeeTest v3,可以直接在你的流程里调用,v4 还没开放。
CaptchaAI 是按识别次数计费的吗?
不是。计费单位是并发线程:BASIC $15/月 5 线程,STANDARD $30/月 15 线程,套餐内次数不限,账单只取决于并发数。
每月只有几百页弹验证码,值得自己搭一套吗?
这个量级上人力比账单贵,先用现成的抓取 API。等验证码页面占比稳定超过两成,再把这一段拆出来自建。
延伸阅读:自己动手搭一套抓取框架,以及自建还是买现成:CaptchaAI 与自托管对比。
验证码交给 API,其余留在你自己的代码里——从 CaptchaAI 开始.