如何使用 Python 请求绕过验证码
在本指南中,我将介绍如何使用 Python 请求来通过验证码,同时还将介绍一些重要的道德考虑因素和常见挑战。
了解验证码及其类型
在探索绕过验证码的方法之前,让我们先了解一下不同类型的验证码:
- 图像验证码 用户根据提示选择图像。
- 基于文本的验证码 要求用户输入扭曲的文本。
- reCAPTCHA v2 和 v3: 谷歌的版本要求用户验证自己的人类身份,有时还需要选择图像。
- 验证码:与 reCAPTCHA 类似,但在设计时考虑到了隐私问题。
- 隐形验证码:验证码在后台运行,用户看不到,但可以监控他们的互动。
方法 1:使用反验证码服务
在回顾一些基本的验证码解决服务之前,我想向大家推荐 Bright Data 的验证码解决工具 作为更优越的选择。虽然价格稍高,但您得到的是最完整的套餐。
反验证码服务,例如 2Captcha 或 反验证码网站这些服务可以使用人工或人工智能代表您解决验证码问题。这些服务提供 API,允许开发人员传递验证码图像或 URL,并获得相应的解决方案。
- 安装请求库:
- pip install requests
- 设置反验证码:从验证码解决服务中注册获取 API 密钥。
代码示例:
import requests
def solve_captcha(api_key, image_url):
url = 'https://2captcha.com/in.php'
data = {
'key': api_key、
'方法': base64,
'正文': image_url、 # Base64 encoded CAPTCHA image
json: 1
}
response = requests.post(url, data=data).json()
if response['status'] == 1:
return response[‘请求’] # Returns the CAPTCHA solution
else:
return None
使用方法:在请求标头或表单数据中使用验证码解决响应。
方法 2:为 reCAPTCHA 和 hCAPTCHA 集成 Selenium
对于像 reCAPTCHA 和 hCAPTCHA 这样的复杂验证码(仅使用请求很难绕过),Selenium 可以帮助模拟人机交互。
- 安装 Selenium 和 WebDriver:
- pip install selenium
- 自动点击验证码:
from selenium import webdriver
from selenium.webdriver.common.by import By
driver = webdriver.Chrome()
driver.get("https://example.com/recaptcha-page")
# Click on the CAPTCHA checkbox
captcha_box = driver.find_element(By.ID、 recaptcha-anchor)
captcha_box.click()
局限性:即使使用 Selenium,复杂的验证码仍可能需要反验证码服务。查看我们的文章 最佳验证码解决工具.
方法 3:使用机器学习解决验证码问题(高级)
机器学习模型可以识别基于文本和图像的验证码模式。不过,训练模型需要大量标有验证码的图像数据集。
1.工具和图书馆:
- 使用 TensorFlow 或 PyTorch 进行模型训练。
- 用于图像预处理的 OpenCV
2.数据集准备:
- 收集带有标签的验证码图像数据集。
- 使用验证码数据集,如在线提供商提供的验证码。
3.模型培训: 在已标记的验证码图像上训练模型,以识别验证码中的字符和图像。
方法 4:基于 Cookie 的 reCAPTCHA v3 旁路
对于 reCAPTCHA v3,网站会监控用户行为以检测验证码提示。通过使用 cookie 进行验证,您可以完全避免验证码提示。
1. 使用 Selenium 获取 Cookie:
cookies = driver.get_cookies()
2.向请求传递 Cookie:
session = requests.Session()
for 饼干 in cookies:
session.cookies.set(cookie[`名称`], cookie['value'])
3.使用存储的 Cookie 提出申请:此方法最适用于依赖浏览器行为数据的 reCAPTCHA v3。
方法 5:利用人机交互模式解决隐形验证码问题
- 用 Selenium 模拟人类行动:在 Selenium 中使用逼真的鼠标移动和按键来模拟人类交互模式,可以减少验证码的出现。
- 类人延迟模拟:在页面交互中引入延迟,可减少僵尸检测系统的怀疑。
有效绕过验证码的其他提示
为了进一步降低检测风险:
- 使用 IP 轮播:与代理轮换服务相结合,避免基于 IP 的封堵。
- 引入延迟:随机调整请求之间的延迟时间,使其看起来不那么像机器人。
- 会议一致性:在不同请求中保留 cookie 和标头,以确保浏览会话的一致性。
结论
在网络刮擦中绕过验证码需要综合使用多种策略,从使用反验证码服务和 Selenium 等自动化工具到旋转 IP 和模拟人类行为。这些方法可以让机器人有效地绕过验证码,但必须考虑道德影响,因为验证码的目的是保护数据和用户安全。在尊重网站政策的前提下平衡这些方法,有助于以负责任的方式实现刮擦目标。

