如何使用 Python Requests 绕过 CAPTCHA

在本指南中,我将介绍如何使用 Python Requests 来绕过 CAPTCHA,同时也会谈到一些重要的伦理考量和常见挑战。

了解 CAPTCHA 及其类型

在探索绕过 CAPTCHA 的方法之前,我们先了解不同类型:

  1. 图片 CAPTCHA: 用户根据提示选择图片。

  2. 基于文本的 CAPTCHA: 要求用户输入扭曲的文本。

  3. reCAPTCHA v2 和 v3: Google 的版本会要求用户验证其人类身份,有时需要选择图片。

  4. hCAPTCHA:类似于 reCAPTCHA,但在设计时更注重隐私。

  5. 隐形 CAPTCHA:在后台运行的 CAPTCHA,用户不可见,但会监控他们的交互。

方法 1:使用反 CAPTCHA 服务

在我们回顾一些基础的 CAPTCHA 破解服务之前,我想推荐 Bright Data 的 CAPTCHA 破解工具,它是更优秀的选择。价格稍高一些,但你获得的是最完整的方案。

反 CAPTCHA 服务,例如 2Captcha 或 Anti-Captcha.com,会通过人工人员或 AI 代你解决 CAPTCHA。这些服务提供 API,允许开发者传入 CAPTCHA 图片或 URL,并接收返回的解决结果。

  1. 安装 requests 库:

  2. pip install requests

  3. 设置反 CAPTCHA:从 CAPTCHA 破解服务注册获取 API 密钥。

示例代码:

import requests

def solve_captcha(api_key, image_url):

url = 'https://2captcha.com/in.php'

data = {

'key': api_key,

'method': 'base64',

'body': image_url, # Base64 encoded CAPTCHA image

'json': 1

}

response = requests.post(url, data=data).json()

if response'status' == 1:

return response'request' # Returns the CAPTCHA solution

else:

return None

用法:在你的请求标头或表单数据中使用 CAPTCHA 破解响应。

方法 2:集成 Selenium 处理 reCAPTCHA 和 hCAPTCHA

对于像 reCAPTCHA 和 hCAPTCHA 这样的复杂 CAPTCHA,仅使用 requests 很难绕过,Selenium 可以帮助模拟人类交互。

  1. 安装 Selenium 和 Webdriver:

  2. pip install selenium

  3. 自动点击 CAPTCHA:

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,复杂的 CAPTCHA 可能仍然需要反 CAPTCHA 服务。查看我们的文章:最佳 CAPTCHA 破解工具。

方法 3:使用机器学习进行 CAPTCHA 破解(高级)

机器学习模型可以识别基于文本和图片的 CAPTCHA 中的模式。不过,训练模型需要大量带标签的 CAPTCHA 图片数据集。

1. 工具和库:

  • 用于模型训练的 TensorFlow 或 PyTorch。

  • 用于图像预处理的 OpenCV。

2. 数据集准备:

  • 收集带标签的 CAPTCHA 图片数据集。

  • 使用来自在线提供商等存储库中的 CAPTCHA 数据集。

3. 模型训练: 在带标签的 CAPTCHA 图片上训练你的模型,以识别 CAPTCHA 中的字符和图像。

对于 reCAPTCHA v3,网站会监控用户行为以检测 CAPTCHA 提示。通过使用 Cookie 进行身份验证,你或许可以完全避免 CAPTCHA 提示。

1. 使用 Selenium 获取 Cookie:

cookies = driver.get_cookies()

2. 将 Cookie 传递给 requests:

session = requests.Session()

for cookie in cookies:

session.cookies.set(cookie'name', cookie'value')

3. 使用已存储的 Cookie 发起请求:此方法最适用于依赖浏览器行为数据的 reCAPTCHA v3。

方法 5:使用人类交互模式解决隐形 CAPTCHA

  1. 用 Selenium 模拟人类操作:在 Selenium 中使用逼真的鼠标移动和按键操作来模仿人类交互模式,可能会减少 CAPTCHA 的出现。

  2. 模拟类人延迟:在页面交互中引入延迟,可以让机器人检测系统降低怀疑。

有效绕过 CAPTCHA 的额外技巧

为了进一步降低被检测的风险:

  • 使用 IP 轮换:结合代理轮换服务,避免基于 IP 的封锁。

  • 引入延迟:随机化请求之间的延迟,让行为看起来不那么像机器人。

  • 保持会话一致性:在请求之间保持 Cookie 和标头一致,以维持稳定的浏览会话。

结论

在网页抓取中绕过 CAPTCHA 需要结合多种策略,从使用反 CAPTCHA 服务和 Selenium 等自动化工具,到轮换 IP 以及模拟类人行为。这些方法能让机器人有效绕开 CAPTCHA,但必须考虑其伦理影响,因为 CAPTCHA 的本意是保护数据和用户安全。在尊重网站政策的前提下平衡这些方法,有助于以负责任的方式实现抓取目标。

有什么问题吗?请在评论中告诉我!

对其他网页抓取指南感兴趣?

  • 使用 Scrapy 进行网页抓取

  • 使用 Selenium 进行网页抓取

  • 用于网页抓取的 JavaScript 与 Python 对比

  • 使用 Python lxml 进行网页抓取

  • 使用 Excel 进行网页抓取

  • 使用 Python 进行网页抓取

  • 使用 C# 进行网页抓取

  • 抓取亚马逊畅销商品

  • 使用 Google Sheets 进行网页抓取

  • 为网页抓取绕过 Cloudflare

  • 请求限速指南

更多精彩文章,请访问我的个人主页 --- Data Journal ❤️

相关推荐
happylifetree1 小时前
Python06(补充4):PyCharm里的删除
python·pycharm
打工仔折腾 AI1 小时前
蓝耘元生代实测:用WorkBuddy与TextIn xParse拆解43页建模论文
人工智能·后端·python·数学建模·langchain·ai agent 实战
用户0332126663671 小时前
Python 实现 Excel 转 XML:快速上手
python·excel
Zhou1411361 小时前
MyBatisPlus_02_条件构造器与高级功能
java·开发语言·python
打工仔折腾 AI2 小时前
网易UU远程实测:手机控电脑做Python开发和Agent调试的真实体验
人工智能·后端·python·智能手机·性能优化·电脑·ai agent 实战
轩轶子2 小时前
Python CLI Todo:一次数据结构错误引发的 Bug
数据结构·python·bug
“AI国潮设计-小江”2 小时前
【AIGC实战】Python+SDXL打造潮汕国潮IP:英歌舞麻将的自动化生成与商用思路
开发语言·人工智能·python·prompt·aigc
zh路西法2 小时前
【上手一只MicroDuck】:(一)从机器人结构到强化学习训练框架
python·强化学习·huggingface·ppo·mujoco·microduck
alphaTao2 小时前
LeetCode 每日一题 2026/9/21-2026/9/27
python·算法·leetcode