如何使用 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 ❤️

相关推荐
郝学胜-神的一滴7 分钟前
AI 编程智能体 27:吃透MCP通信机制
人工智能·python·langchain·wpf·numpy·scikit-learn
天天被压力15 分钟前
【A股分钟级高频数据完全手册 #09】A股历史分时交易数据接口:普通分时怎么批量下
java·人工智能·python
天天被压力23 分钟前
【A股分钟级高频数据完全手册 #10】股票实时行情数据接口Python:公开源实时交易取数
java·人工智能·python
特立独行的猫A10 小时前
我给女儿写了个打字练习:一边敲键盘,一边把小学英语单词记牢
java·后端·python
cpolar技术支持10 小时前
「我这边连不上你那个服务」—— 用清单驱动的 TCP 连通性只读看板,cpolar 让远端同事自己取证
python·内网穿透·tcp·cpolar·网络诊断
云和数据.ChenGuang11 小时前
LangGraph 异步 Node 的设计与写法实践
开发语言·人工智能·python·机器学习·php
天诰12 小时前
SA-K-11 检索会消失吗与四个未解问题
java·服务器·人工智能·python·机器学习·ai编程
benchmark_cc13 小时前
用 QuantDash 读取美股行情:AAPL.US 的运行前检查、排错顺序与数据校验清单
python·数据分析·pandas·量化交易·股票数据·quantdash
羲云网络16 小时前
GPT Image 2.6 接入指南:Flare、Sunburst 怎么选,编辑失败如何排查
人工智能·python·aigc·图像生成·acedatacloud
橙橙笔记19 小时前
具身智能的学习 - 完成一个机械臂 第1节
python·学习·机械臂·具身智能