Python爬虫突破验证码技巧 - 2Captcha
在互联网世界中,验证码作为一种防止机器人访问的工具,是爬虫最常遇到的阻碍。验证码的类型众多,从简单的数字、字母验证码,到复杂的图像识别验证码,再到更为高级的交互式验证码,每一种都有其独特的识别方法和应对策略。在这篇文章中,我们将一一介绍各种验证码的工作原理和使用2Captcha进行破解的策略。
验证码简介
验证码(CAPTCHA),全称为"Completely Automated Public Turing test to tell Computers and Humans Apart",是一种区分用户是计算机还是人的公共全自动程序。最初,验证码主要是一些混杂字母和数字的图片,但随着技术的发展,出现了更多种类的验证码,例如reCAPTCHA、GeeTest拼图验证码、hCaptcha、KeyCaptcha等。
1. Normal CAPTCHA
Normal CAPTCHA是一种常见的验证码类型,它包含字母和数字的图片进行扭曲和变形。
2. 清晰文字问题的验证码
清晰文字问题的验证码主要是对问题的理解和答案的回答,比如“What is the capital of China?”,回答应该是“Beijing”。
3. 旋转物体的验证码
这种验证码要求用户旋转一个3D物体到正确的方向。
4. reCAPTCHA V2
reCAPTCHA V2是Google开发的验证码系统,要求用户选择一组与给定主题相关的图像。
5. GeeTest拼图验证码
GeeTest验证码是一种常见的滑动拼图验证码,用户需要将一个不完整的图像拼凑完整
6. hCaptcha
hCaptcha是一种验证人类的验证码,要求用户选择与给定主题相关的答案。
7. KeyCaptcha
KeyCaptcha是一种交互式验证码,需要用户进行一些操作,比如拖动一个物体到指定位置。
8. Capy拼图验证码
Capy是另一种拼图验证码,它将一个图像切分成多个小块,需要用户通过拖动小块拼凑成完整的图像。
9. Grid法验证码
Grid法验证码是一种基于网格的图像识别验证码,要求用户识别网格中的特定对象或图案。
10. Canvas验证码
Canvas验证码是一种在HTML5 canvas元素中绘制的验证码,它可以是文本,也可以是图像。
11. ClickCaptcha
ClickCaptcha会返回验证码图片的点坐标,用户需要根据这些坐标点击正确的位置。
2Captcha 自动验证码识别介绍
https://2captcha.com/zh/
2Captcha是一个自动验证码识别服务商,支持上述所有的验证码类型,识别效果目前最好。 (https://2captcha.com/zh/)
2Captcha服务介绍:
2Captcha支持的所有验证码类型
验证码类型 | 每 1000 人的费率 | 描述 |
---|---|---|
Normal Captcha, Text Captcha | 0.5−1 | 费率是灵活的,取决于服务的当前负载。 您可以在帐户设置中查看当前速率和限制最大速率。 |
reCAPTCHA V2 | $2.99 | 该费率适用于通过令牌解决的 Google 的 reCAPTCHA V2。 |
reCAPTCHA V3 | 1.45,2.99 | score <= 0.3, score > 0.3 |
reCAPTCHA Enterprise | $2.99 | 该费率适用于 Google 的 reCAPTCHA Enterprise。 |
Geetest | $2.99 | 该费率适用于 Geetest 验证码。 |
Grid Method, Coordinates | $1.20 | 该费率适用于您需要单击图像的任何验证码。 |
RotateCaptcha | $0.50 | 该费率适用于您需要旋转图像的任何验证码。 |
Arkose Labs FunCaptcha Token Method | $2.99 | 该费率适用于通过令牌解决的 Arkose Labs FunCaptcha。 |
KeyCaptcha | $2.99 | 该费率适用于 KeyCaptcha。 |
hCaptcha | $2.99 | 该费率适用于 hCaptcha。 |
Capy | $2.99 | 该费率适用于 Capy。 |
TikTok | $2.99 | 该费率适用于 TikTok captcha。 |
官网链接
https://2captcha.com/zh/
Python集成
官网提供了众多的代码脚本 https://2captcha.com/zh/for-customer
以reCAPTCHA V2示例
pip3 install 2captcha-python
代码GitHub链接:https://github.com/2captcha/2captcha-python
import sys
import os
sys.path.append(os.path.dirname(os.path.dirname(os.path.realpath(__file__))))
from twocaptcha import TwoCaptcha
api_key = os.getenv('APIKEY_2CAPTCHA', 'YOUR_API_KEY')
solver = TwoCaptcha(api_key)
try:
result = solver.recaptcha(
sitekey='6LfD3PIbAAAAAJs_eEHvoOl75_83eXSqpPSRFJ_u',
url='https://2captcha.com/demo/recaptcha-v2')
except Exception as e:
sys.exit(e)
else:
sys.exit('solved: ' + str(result))
总结
验证码的难度随着技术发展越来越高,2Captcha服务可以有效帮助爬虫绕过验证码限制,开发集成简单,推荐使用。
Python爬虫突破验证码技巧 - 2Captcha的更多相关文章
- Python爬虫突破封禁的6种常见方法
转 Python爬虫突破封禁的6种常见方法 2016年08月17日 22:36:59 阅读数:37936 在互联网上进行自动数据采集(抓取)这件事和互联网存在的时间差不多一样长.今天大众好像更倾向于用 ...
- python爬虫-基础入门-python爬虫突破封锁
python爬虫-基础入门-python爬虫突破封锁 >> 相关概念 >> request概念:是从客户端向服务器发出请求,包括用户提交的信息及客户端的一些信息.客户端可通过H ...
- Python爬虫常用小技巧之设置代理IP
设置代理IP的原因 我们在使用Python爬虫爬取一个网站时,通常会频繁访问该网站.假如一个网站它会检测某一段时间某个IP的访问次数,如果访问次数过多,它会禁止你的访问.所以你可以设置一些代理服务器来 ...
- 转载:用python爬虫抓站的一些技巧总结
原文链接:http://www.pythonclub.org/python-network-application/observer-spider 原文的名称虽然用了<用python爬虫抓站的一 ...
- 用python爬虫抓站的一些技巧总结 zz
用python爬虫抓站的一些技巧总结 zz 学用python也有3个多月了,用得最多的还是各类爬虫脚本:写过抓代理本机验证的脚本,写过在discuz论坛中自动登录自动发贴的脚本,写过自动收邮件的脚本, ...
- python爬虫:一些常用的爬虫技巧
python爬虫:一些常用的爬虫技巧 1.基本抓取网页 get方法: post方法: 2.使用代理IP 在开发爬虫过程中经常会遇到IP被封掉的情况,这时就需要用到代理IP; 在urllib2包中有Pr ...
- python爬虫抓站的一些技巧总结
使用python爬虫抓站的一些技巧总结:进阶篇 一.gzip/deflate支持现在的网页普遍支持gzip压缩,这往往可以解决大量传输时间,以VeryCD的主页为例,未压缩版本247K,压缩了以后45 ...
- python爬虫scrapy框架——人工识别登录知乎倒立文字验证码和数字英文验证码(2)
操作环境:python3 在上一文中python爬虫scrapy框架--人工识别知乎登录知乎倒立文字验证码和数字英文验证码(1)我们已经介绍了用Requests库来登录知乎,本文如果看不懂可以先看之前 ...
- Python爬虫入门教程 60-100 python识别验证码,阿里、腾讯、百度、聚合数据等大公司都这么干
常见验证码 之前的博客中已经解决了一些常见验证码的问题,但是验证码是层出不穷的,目前解决验证码除了通过常规手段解决以外,还可以通过人工智能领域的深度学习去解决 深度学习?! 无疑对爬虫coder提高了 ...
- Python爬虫技巧
Python爬虫技巧一之设置ADSL拨号服务器代理 reference: https://zhuanlan.zhihu.com/p/25286144 爬取数据时,是不是只能每个网站每个网站的分析,有没 ...
随机推荐
- 如何遍历HashMap集合?
在Java中,HashMap是一种常用的数据结构,它提供了快速的查找.插入和删除操作.当我们需要遍历HashMap中的所有元素时,可以利用三种不同的方法实现. 方法一:使用键值对遍历 HashMap中 ...
- Qt第三方库QtAV--- ubuntu编译与运行
Qt第三方库QtAV--- ubuntu编译与运行 今天又要接触这个,把一些错误或者不足的地方重新补充下!!!由于前面一段时间,项目中需要借助QtAV接口进行视频播放,特此记录下整个配置过程.整个代码 ...
- 保姆级教程:用GPU云主机搭建AI大语言模型并用Flask封装成API,实现用户与模型对话
导读 在当今的人工智能时代,大型AI模型已成为获得人工智能应用程序的关键.但是,这些巨大的模型需要庞大的计算资源和存储空间,因此搭建这些模型并对它们进行交互需要强大的计算能力,这通常需要使用云计算服务 ...
- 线上FullGC问题排查实践——手把手教你排查线上问题
作者:京东科技 韩国凯 一.问题发现与排查 1.1 找到问题原因 问题起因是我们收到了jdos的容器CPU告警,CPU使用率已经达到104% 观察该机器日志发现,此时有很多线程在执行跑批任务.正常来说 ...
- UIOTOS:一款无门槛的前端0代码搭建工具
什么是UIOTOS? UIOTOS中文名称前端大师,是一款基于图形技术的前端0代码工具,支持通过连线和嵌套无门槛来搭建各类复杂的的交互界面,包括后台管理系统.组态数据大屏等,实现跟代码开发媲美的效果. ...
- 想打印k8s资源YAML结果搞懂了Client-Side & Server-Side Apply
前言 由于查看k8s资源YAML时常看到沉长的YAML与手写的格式,相差甚远不利于阅读,经过探索官方文档,才理解什么是Client-Side & Server-Side Apply. 先看一下 ...
- define定义常量和宏
define:预处理指令 使用方法有两种 1.define定义符号 denfine定义常量 2.define定义宏 宏是有参数的,它的参数是替换 常规来说这样写define定义宏没啥问题 但是这样写 ...
- 2022-06-25:给定一个正数n, 表示有0~n-1号任务, 给定一个长度为n的数组time,time[i]表示i号任务做完的时间, 给定一个二维数组matrix, matrix[j] = {a,
2022-06-25:给定一个正数n, 表示有0~n-1号任务, 给定一个长度为n的数组time,time[i]表示i号任务做完的时间, 给定一个二维数组matrix, matrix[j] = {a, ...
- Vue 全局避免按钮重复点击
这里用到的 Vue.directive 自定义指令 自定义指令是对普通DOM元素进行的底层操作,它是一种有效的的补充和扩展,不仅可以用于定义任何的dom操作,并且是可以复用的 在 main.js 中写 ...
- APP调用第三方(微信)登录(最详细的实现流程)
最近使用weexplus做了个app 用户需要的是可以使用第三方微信实现登录(虽然网上有很多相关的什么申请开发者账户.appid.openid等资料:但是都是讲的中间的那一部分请原谅我是个菜鸟,脑补开 ...