首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >验证码破解全流程实战

验证码破解全流程实战

作者头像
TechLead
发布于 2023-10-21 08:58:03
发布于 2023-10-21 08:58:03
2.5K00
代码可运行
举报
文章被收录于专栏:TechLeadTechLead
运行总次数:0
代码可运行

本文将介绍验证码的历史与发展、验证码破解的历史与发展,验证码破解全流程实战。

验证码的历史与发展

验证码,全称为“Completely Automated Public Turing test to tell Computers and Humans Apart”,即全自动区分计算机和人类的图灵测试,Captcha。早在上个世纪90年代,为了防止恶意的网络机器人行为,像邮件轰炸、暴力破解密码等,验证码应运而生。

最初的验证码是简单的文本字符,如用户只需输入一组扭曲的字母和数字。然后验证码发展到图像验证码,例如,要求用户识别哪些图片中包含某个特定对象(比如猫、狗或汽车等)。随着技术的发展,更为复杂的验证码类型出现了,例如逻辑验证码(例如,3+4=?),音频验证码(用户必须听音频然后输入听到的字符)和3D验证码(用户需要解读3D对象或者场景)。

此外,也有一些新的验证码设计,为了提高用户体验同时维护网站安全,它们需要用户进行更为人性化的操作。例如,滑动验证码让用户通过滑动解锁,点击验证码让用户点击特定的图片或文字,旋转验证码则要求用户调整图片到正确的方向。

一些大公司也开发了自己的验证码系统。例如,Google的reCAPTCHA v2引入了复杂的图像识别任务,需要用户选择包含特定物体(如汽车,交通灯)的图片;而Google的reCAPTCHA v3则摒弃了用户交互的方式,通过分析用户的行为模式来确定是人类还是机器。同样,第三方验证服务如GeeTest CAPTCHA和hCaptcha等,也为网站提供了验证服务,使得他们可以更好地防止自动化的恶意行为。


验证码破解的历史与发展

验证码破解的历史,与验证码的发展紧密相连。早期的验证码破解主要依赖于OCR(Optical Character Recognition,光学字符识别)技术,这是一种将图像中的文本转换为机器可读的字符的技术,用于识别简单的文本验证码。

然而,随着验证码的复杂性的增加,验证码破解也需要更为复杂的技术。例如,对于图像验证码,可能需要使用图像处理技术来处理噪声和扭曲。这可能包括灰度化(将图像转换为黑白),二值化(将图像进一步简化为只有黑和白两种颜色),边缘检测(识别图像中的边缘)等步骤。

对于更为复杂的验证码,例如点击验证码和旋转验证码,可能需要使用更复杂的机器视觉技术。这可能涉及到特征提取(识别图像中的重要特征),对象识别(识别特定的对象或形状),甚至深度学习(训练模型来识别复杂的模式)。

近年来,随着人工智能的发展,机器学习和深度学习等技术也被应用于验证码破解中。例如,卷积神经网络(CNN)已经被用来识别复杂的图像验证码,而递归神经网络(RNN)可以用于识别音频验证码。这些模型通过在大量的数据上进行训练,可以学习到识别验证码的复杂模式,大大提高了验证码破解的准确性和效率。


新时代高精准识别验证码的服务

人工验证码识别服务是一种基于人工智能或人工劳动力的验证码识别解决方案。当机器无法识别复杂的验证码时,这种服务能够提供相对高效且准确的解决方案。

2Captcha

2Captcha是一种基于人工劳动力的验证码识别服务。它提供了一个API接口,允许开发者将无法识别的验证码发送到2Captcha服务。然后2Captcha的工人会手动识别并返回结果。这种服务对处理图像验证码、文本验证码、点击类验证码、GeeTest、reCAPTCHA、FunCaptcha等复杂验证码有很高的准确率,并且提供多种编程语言的接口文档Python、PHP、Java、Go、Ruby、C++、C#。2Captcha的主要优点是其优异的精确性和灵活的API,使得开发者可以轻松集成并在不同环境中使用。

云码

云码基于图像识别技术和人工辅助提供验证码识别服务,提供在线普通图片、滑动、点选、谷歌、HCaptcha、数字计算题验证码识别服务。其对于图像类的验证码有比较好的效果,尤其是各种不同类型的图像验证码。但其对于复杂的验证码存在准确率下降和识别时间较长的情况、验证码种类跟进相较也会慢一些。

冰拓

冰拓可识别各种常见图片验证码,AI识别 + 真人识别双模式,可高效识别坐标题、计算题、字符题、滑块题、拼图题等各种图片。API支持Python、JAVA、PHP、JAVASCRIPT调用,支持按键精灵集成。对于多样化的滑块、拼图、旋转、坐标有自己独特的处理方法和提供定制服务,不支持谷歌验证码。

超级鹰

超级鹰是专业的人工打码平台,对图片数据进行精准、快速分类处理,并实时返还分类结果。支持英文数字、中文汉字、坐标选择计算等多种类型图片验证码,并且提供定制化的验证码识别服务。对于通用的验证码、传统验证码有较好的识别效果,但对于复杂验证码尚未提供更多服务。


验证码破解实战

以2Captcha破解reCAPTCHA v2为例

1. 注册2Captcha,https://cn.2captcha.com/ ,支持支付宝充值

2. 目标破解https://www.scrapebay.com/spam 网站reCAPTCHA v2

3. 拿到2Captcha API_KEY

4. 拿到google sitekey

5. 破解验证码

安装2captcha-python

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
pip3 install 2captcha-python

破解验证码

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# 导入BeautifulSoup、TwoCaptcha、requests库
from bs4 import BeautifulSoup
from twocaptcha import TwoCaptcha
import requests

# TwoCaptcha服务的API秘钥,你需要使用自己的
API_KEY = 'xxxxxxxxxxxxxx'
# 利用TwoCaptcha库,使用提供的API秘钥初始化一个solver对象,该对象可以解决ReCAPTCHA问题
solver = TwoCaptcha(API_KEY)
# 要抓取的网页的URL
url = "https://www.scrapebay.com/spam"
# 这是ReCAPTCHA的site key,可以从网页源码中找到。
site_key='6LfGNEoeAAAAALUsU1OWRJnNsF1xUvoai0tV090n'

# 这个函数用来获取CSRF token和cookies。它首先通过requests.get()获取页面内容,然后通过BeautifulSoup找到CSRF token。最后返回CSRF token和cookies。
def get_csrf_cookie(url):
    response = requests.get(url)
    soup = BeautifulSoup(response.text, "lxml")
    csrf_el = soup.select_one('[name=csrfmiddlewaretoken]')
    csrf = csrf_el['value']
    cokkies = response.cookies
    return csrf, cokkies

# 这个函数用来解决ReCAPTCHA问题。它使用TwoCaptcha solver对象的recaptcha()方法,如果发生异常则打印错误并退出。
def solve(url,sitekey):
    try:
        result = solver.recaptcha(sitekey=sitekey, url=url)
    except Exception as e:
        print(e)
        exit()
    return result

# 首先通过get_csrf_cookie(url)获取CSRF token和cookies,然后通过solve(url,site_key)解决ReCAPTCHA问题,获得ReCAPTCHA的验证码结果
def main():
    csrf,cokkies = get_csrf_cookie(url)
    print("csrf:",csrf)
    print("cokkies:",cokkies)
    result = solve(url,site_key)
    print("captcha:",result)


if __name__ == "__main__":
    main()

运行结果:

6. 获得验证码后的页面数据

包含破解验证码的全部代码如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# 导入BeautifulSoup、TwoCaptcha、requests库
from bs4 import BeautifulSoup
from twocaptcha import TwoCaptcha
import requests

# 2Captcha服务的API秘钥,你需要使用自己的
API_KEY = 'xxxxxxxxxxxxxx'
# 利用TwoCaptcha库,使用提供的API秘钥初始化一个solver对象,该对象可以解决ReCAPTCHA问题
solver = TwoCaptcha(API_KEY)
# 要抓取的网页的URL
url = "https://www.scrapebay.com/spam"
# 这是ReCAPTCHA的site key,可以从网页源码中找到。
site_key='6LfGNEoeAAAAALUsU1OWRJnNsF1xUvoai0tV090n'

# 这个函数用来获取CSRF token和cookies。它首先通过requests.get()获取页面内容,然后通过BeautifulSoup找到CSRF token。最后返回CSRF token和cookies。
def get_csrf_cookie(url):
    response = requests.get(url)
    soup = BeautifulSoup(response.text, "lxml")
    csrf_el = soup.select_one('[name=csrfmiddlewaretoken]')
    csrf = csrf_el['value']
    cokkies = response.cookies
    return csrf, cokkies

# 这个函数用来解决ReCAPTCHA问题。它使用TwoCaptcha solver对象的recaptcha()方法,如果发生异常则打印错误并退出。
def solve(url,sitekey):
    try:
        result = solver.recaptcha(sitekey=sitekey, url=url)
    except Exception as e:
        print(e)
        exit()
    return result

# 这个函数用来提交解决ReCAPTCHA后的页面。它首先构建一个POST请求的payload,然后通过requests.post()方法发送请求。最后返回网页的最后一列的文本。
def post_page(url, csrf, cookie, result):
    payload = 'csrfmiddlewaretoken={}&g-recaptcha-response={}'
    headers = {
        'Content-Type': 'application/x-www-form-urlencoded',
        'Referer': 'https://www.scrapebay.com/spam'
    }
    response = requests.post(url,data=payload.format(csrf,result),headers=headers,cookies=cookie)
    soup = BeautifulSoup(response.text, "lxml")
    el = soup.select_one('td:last-child')
    return el.get_text()

# 先通过get_csrf_cookie(url)获取CSRF token和cookies,然后通过solve(url,site_key)解决ReCAPTCHA问题,最后通过post_page(url,csrf,cokkies,result)提交页面并打印出结果。
def main():
    csrf,cokkies = get_csrf_cookie(url)
    print("csrf:",csrf)
    print("cokkies:",cokkies)
    result = solve(url,site_key)
    print("captcha:",result)
    data = post_page(url,csrf,cokkies,result)
    print("result:",data)

if __name__ == "__main__":
    main()

网站验证后的页面:

运行结果:

7. 结束

至此我们使用2Captcha服务破解了reCAPTCHA v2,并获得了需要爬取的内容。2Captcha服务包含多种验证码格式,均可以使用上述的流程,修改其中不同验证码的细节部分,攻克验证码的识别难点。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2023-07-21,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 TechLead 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Selenium+2Captcha 自动化+验证码识别实战
本文深入探讨了使用Selenium库进行网页自动化操作,并结合2Captcha服务实现ReCAPTCHA验证码的破解。内容涵盖Selenium的基础知识、验证码的分类、2Captcha服务的使用,以及通过实例进行的详细讲解,最后对实践进行总结和优化思考,为读者提供了一条完整的验证码破解实践路线图。
TechLead
2023/10/21
2K0
Selenium+2Captcha 自动化+验证码识别实战
谷歌家的验证码怎么了?搞他!
很久没有做爬虫破解类相关的分享了,之前交流群里有朋友提问谷歌系的reCAPTCHA V2 验证码怎么破,因为工作的原因我是很久之后才看到的,也不知道那位朋友后来成功了没有。那今天就来跟大家分享一下 reCAPTCHA V2 的破解。
崔庆才
2020/01/02
4.5K0
验证码的处理 google recaptcha
google验证码的第三方处理 #经过批量测试,成功率高达百分之九十,1000个邮箱大概4美金,比较实惠 第一部分. 通过请求youtube简介页面,获取网红的channel_id和页面产生的ses
用户8346838
2021/03/10
1.5K0
原来这样 4 步就能破解,再也不用手输验证码了!
• 目标网站开放凭据(验证码的“站点密钥”,站点url,可选:代理IP)由您(客户端)复制并提交给2captcha服务。您可以使用简单的Web开发人员工具找到它们。
double
2020/04/01
4.2K0
验证码识别服务2Captcha框架
2Captcha是一个自动验证码识别服务,主要用于解决各种互联网服务中的验证码问题。在许多网站注册账户或进行敏感操作时,为了验证用户是真实的而不是自动化程序,会出现验证码。用户必须正确输入验证码,才能继续使用网站的功能。该框架的目标是帮助客户自动化解决验证码问题。客户可以通过付费将需要解决的验证码发送给2Captcha,然后由2Captcha将这些验证码分发给专业的打码员进行输入。这些打码员是人工操作,而不是机器,他们能够快速有效地识别验证码,确保客户能够顺利通过验证码验证,继续使用所需的功能。
王 瑞
2023/07/22
1.1K0
验证码识别服务2Captcha框架
1.3K Star开源好工具,跳过图形验证码
开源日记
2023/12/13
1.1K0
1.3K Star开源好工具,跳过图形验证码
自动识别recaptcha验证码辅助爆破
最近的项目实在有点多,小的几千块,大的几百万。有些真心不好做,有些只是写写代码。唉,我是废物。几百万的真心吃不下。
洛米唯熊
2021/10/21
3.7K2
提升爬虫OCR识别率:解决嘈杂验证码问题
在数据抓取和网络爬虫技术中,验证码是常见的防爬措施,特别是嘈杂文本验证码。处理嘈杂验证码是一个复杂的问题,因为这些验证码故意设计成难以自动识别。本文将介绍如何使用OCR技术提高爬虫识别嘈杂验证码的准确率,并结合实际代码示例,展示如何使用爬虫代理IP技术来规避反爬措施。
jackcode
2024/07/08
3200
提升爬虫OCR识别率:解决嘈杂验证码问题
Python模拟登陆 —— 征服验证码 1 豆瓣
captcha是Completely Automated Public Turing Test to Tell Computers and Humans Apart ,全自动区分计算机和人类的图灵测试
SeanCheney
2018/04/24
1.2K0
Python模拟登陆 —— 征服验证码 1 豆瓣
国内使用reCaptcha验证码的完整教程
reCaptcha是Google公司的验证码服务,方便快捷,改变了传统验证码需要输入n位失真字符的特点。reCaptcha在使用的时候是这样的:
宜轩
2022/12/26
37.2K0
国内使用reCaptcha验证码的完整教程
HCaptcha 的模拟点击破解方案来了!
这是「进击的Coder」的第 634 篇技术分享 作者:崔庆才 前面的文章我们介绍过 ReCaptcha 的模拟点击破解教程,但除了 ReCaptcha,还有另外和 ReCapacha 验证流程很相似的验证码,叫做 HCaptcha。 ReCaptcha 是谷歌家的,因为某些原因,咱们国内是无法使用 ReCaptcha 的,所以有时候 HCaptcha 也成了一些国际性网站的比较好的选择。 那今天我们就来了解下 HCaptcha 和它的模拟点击破解流程。 HCaptcha 我们首先看看 HCaptcha
崔庆才
2022/06/01
4.7K1
HCaptcha 的模拟点击破解方案来了!
极验验证码破解分析
任何一个网站,如果在登录时网站接入的极验的接口,那么该网站就可以使用极验验证码进行登录,此时极验验证码API就会返回两个极验参数,gt和challenge,这两个参数只跟极验验证码API相关,跟这个网站没有任何关系。
周小董
2019/08/18
4.8K0
Python爬虫基础:验证码的爬取和识别详解
今天要给大家介绍的是验证码的爬取和识别,不过只涉及到最简单的图形验证码,也是现在比较常见的一种类型。
Python中文社区
2018/12/07
2.3K0
Python爬虫基础:验证码的爬取和识别详解
Python爬虫模拟登录并跳过二次验证
模拟登录是指通过程序模拟用户在浏览器中的登录操作,向服务器发送登录请求,获取登录后的会话信息(如Cookie)。这通常涉及发送用户名、密码等登录凭证,并处理服务器返回的响应。
小白学大数据
2025/03/31
5020
国内使用Google reCaptcha验证码
为啥我出这篇文章呢,因为我有几天用了vaptcha进行人机验证,还算好用,但是发现手机上有广告,本着原则问题,我剔除了人机验证。 又发现在邻居@kidultff发现谷歌国内验证也可以,于是探路V3版本
一朵灼灼华
2022/08/05
4.6K0
国内使用Google reCaptcha验证码
Python爬虫自学系列(六)
这是一种比较简单粗暴的方式啊,首先如果没有验证码的需求的话,碧如我之前爬CSDN抓到自己的个人信息那次。这种方式就很好了。
看、未来
2021/02/01
4470
ASP.NET Core 使用 Google 验证码(Google reCAPTCHA)
验证码在我们实际的生活场景中非常常见,可以防止恶意破解密码、刷票、论坛灌水、刷注册等等。现在的网站基本都有使用验证码来对用户的行为进行验证。从简单的文字验证码、图片验证码、滑动验证码、图片选择验证码等,验证码一直在进化,在和“黑恶势力”做斗争。Google 验证码是 Google 提供的一项免费的验证码服务,接入非常简单,推荐用它来替换传统的图片验证码。
晓晨
2019/04/23
2.8K0
ASP.NET Core  使用 Google 验证码(Google reCAPTCHA)
Java使用Selenium反爬虫优化方案
当我们爬取大站的时候,就得需要对抗反爬虫机制的场景,因为项目要求使用Java和Selenium。Selenium通常用于模拟用户操作,但效率较低,所以需要我们结合其他技术来实现高效。
华科云商小徐
2025/06/11
2121
Python模拟登陆 —— 征服验证码 2 B站
B站的登录密码用了rsa加密(两个大质数的乘积很难进行逆向分解,所以可以用这个乘积来做公钥)。 所以运行py文件之前,使用镜像,先用pip安装rsa库: pip install rsa -i https://pypi.tuna.tsinghua.edu.cn/simple/ 运行: import requests import re import time import sys import json import rsa import os.path import binascii import d
SeanCheney
2018/04/24
1K0
Python模拟登陆 —— 征服验证码 2 B站
ASP.NET Core 使用 Google 验证码(reCAPTCHA v3)代替传统验证码
Google reCAPTCHA(v3下同) 的使用不需要“梯子”,但申请账号的时候需要!
乔达摩@嘿
2020/09/11
2.3K0
ASP.NET Core 使用 Google 验证码(reCAPTCHA v3)代替传统验证码
推荐阅读
相关推荐
Selenium+2Captcha 自动化+验证码识别实战
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档