
Ethan Collins
Pattern Recognition Specialist

如果你尝试过网络爬取,你可能遇到过验证码——那些恼人的“证明你是人类”测试,会阻止自动化请求。在本指南中,我将分享一些切实可行的策略,以最大限度地减少验证码中断,并向你展示如何在出现验证码时处理它们。让我们开始吧!
验证码旨在阻止机器人,这意味着如果你的爬虫满足以下条件,可能会被标记:
**专业提示:**首先模仿人类行为:减慢请求速度,轮换用户代理,并使用代理。但是,如果验证码仍然出现,你需要一个更强大的解决方案。
当规避策略不足时,像Capsolver这样的服务可以自动化验证码求解。以下是它的工作原理:
# pip install requests
import requests
import time
api_key = "YOUR_API_KEY" # 替换为你的Capsolver密钥
site_key = "" # 来自目标网站
site_url = "" # 你的目标URL
def solve_captcha():
payload = {
"clientKey": api_key,
"task": {
"type": "ReCaptchaV2TaskProxyLess",
"websiteKey": site_key,
"websiteURL": site_url
}
}
response = requests.post("https://api.capsolver.com/createTask", json=payload)
task_id = response.json().get("taskId")
# 获取结果
while True:
time.sleep(3)
result = requests.post("https://api.capsolver.com/getTaskResult", json={"clientKey": api_key, "taskId": task_id})
status = result.json().get("status")
if status == "ready":
return result.json()["solution"]["gRecaptchaResponse"]
elif status == "failed":
print("未能解决验证码")
return None
captcha_token = solve_captcha()
print(f"已解决的验证码令牌:{captcha_token}")
工作原理:
在进行网络爬取时,反复未能完全解决验证码而苦苦挣扎?
索取顶级验证码解决方案的奖励代码 - CapSolver:CAPTCHA。兑换后,每次充值后将获得额外5%的奖励,无限量
并非所有网站都使用验证码。让我们抓取books.toscrape.com,这是一个无验证码的沙箱:
import requests
from bs4 import BeautifulSoup
url = "http://books.toscrape.com/"
response = requests.get(url)
soup = BeautifulSoup(response.text, "html.parser")
# 提取图书标题和价格
for book in soup.select("article.product_pod"):
title = book.h3.a["title"]
price = book.select(".price_color")[0].get_text()
print(f"标题:{title},价格:{price}")
工作原理:
此网站没有反机器人措施,但在爬取之前始终检查网站的robots.txt。
在解决验证码之前,你需要知道它的类型(例如,reCAPTCHA v2、hCaptcha)。使用Capsolver的验证码识别指南之类的工具来:
sitekey或pageurl。reCAPTCHA v2的示例参数:
websiteKey: "6Le-wvkSAAAAAPBMRTvw0Q4Muexq9bi0DJwx_mJ-"websiteURL: 你的目标页面的URL。time.sleep()在请求之间添加延迟。User-Agent和Accept-Language。它们结合使用人工智能和人工操作员来解决验证码并返回用于自动化的令牌。
大多数常见类型(reCAPTCHA、hCaptcha)都可以解决,但高级验证码需要更复杂的方法。
验证码是一个障碍,但并非死胡同。将智能爬取实践与Capsolver等工具相结合,以最大限度地减少中断。快乐爬取!🚀
学习可扩展的Rust网络爬虫架构,包括reqwest、scraper、异步爬取、无头浏览器爬取、代理轮换以及符合规范的验证码处理。
