好久没有分享爬虫破解相关的东西了。 以前,交流群里有朋友问如何破解 V2验证码。 因为工作原因,很久以后才看到。 不知道那位朋友后来成功了没有。 。 那么今天给大家分享一下V2的破解。 (小马补充:想要加入交流群的可以到公众号底部点击技术交流,里面有读者和交流群,点击后会弹出崔老师的二维码,扫描微信进群二维码~)如果大家访问一些国外网站,一定见过这样的验证码。 它说“I'm not a”,意思是“我不是机器人”。 验证码如下所示:
这时,只要我们点击前面的复选框,验证码算法就会首先使用其“风险分析引擎”进行安全测试。 如果直接测试通过,我们会直接得到如下结果:
如果算法检测到当前系统存在风险,例如不熟悉的网络环境或模拟程序,则需要进行第二次验证。 它会进一步弹出类似以下内容:
例如上图中,验证码页上会出现九张图片,顶部会出现“树”字样。 我们需要点击下面九张图片中带有“树”的图片。 点击后,可能会出现几张新图片。 我们需要再次点击图片,最后点击“验证”按钮即可完成验证。 或者我们可以点击下面的“耳机”图标,会切换到听写模式,验证码会变成这样:
这时,如果我们能够填写读取验证码的音频内容,我们也可以通过验证。 两种方法都可以通过验证。 验证完成后,我们就可以完成表单提交,比如完成登录、注册等操作。 这个验证码的名称是什么? 该验证码为V2验证码。 它是一种行为验证码。 这些行为包括点击复选框、选择对应图片、语音听写等,只有这些行为通过验证后,这个验证码才能通过。 核实。 与普通图形验证码相比,此类验证码交互体验更好,安全性更高,更难破解。 国外很多网站都使用这种验证码。 由于某些原因,无法在中国直接使用。 不过只要把验证码的域名改成1就可以使用,所以有时候我们也可以在国内的一些网站上使用。 你可以看到。 其实上面介绍的验证码只是验证码的一种形式,是V2的显式版本。 另外,V2版本还有隐式版本。 隐式版本在验证过程中将不再显式显示验证。 页面,将验证码绑定到提交按钮,提交表单时自动完成验证。 除了V2版本外,还推出了最新的V3版本。 V3验证码会根据用户的行为计算出分数。 该分数代表用户可能是机器人的概率。 最后用概率来判断验证是否能够通过。 具有更高的安全性和更好的体验。 具体内容可以参考官方介绍:。 那么我们在爬取的时候,如果遇到这样的验证码怎么办呢? 我们对于它可以做些什么呢? 别担心,本文将介绍解决方案。
机器学习与识别服务
当我在写上一篇如何识别滑动验证码问题的文章时,有朋友留言问我是否可以做一个机器学习项目。 我回答说,当然没问题。 稍等一下,我这周就做。 那周我从周一到周五去了。 我记得我应该使用 yolo 。 我反复修改。 小马经常过来督促崔选秀。 花了很长时间。 然后在那周周五晚上 23:59,我有了一个想法。 ,终于明白了。 螺丝机学习,服务有不好吗? 比解县还要复杂。 我还没有看到国内网站有破解版的。 这次我使用了俄罗斯一家服务商提供的图像识别和一系列行为验证码识别服务。
破解验证码需要图像识别算法和大量人力的支持。 如果我们只有一个简单的图形验证码,它可以识别内容,并通过一些图像识别算法将其转换为文本内容。 如果是比较复杂的图形验证码或者类似的行为验证码,背后就会有人模拟验证码,验证成功后返回秘钥。 我们可以利用该结果来完成一些验证码的绕过。 。 当然,这种网站是要收费的。 按1000次识别计算,成本在0.5美元到2.99美元之间。 例如,一个非常简单的图形验证码可能需要0.5美元。 这种验证码对于人力和计算资源的消耗是比较小的。 对于复杂的验证码,需要花费2.99美元,因为这样的验证码不容易识别。 背后的人可能需要查看多张图片并点击多次才能完成成功验证。 目前我所使用的服务收费标准如下:
具体内容或更新可以查看其官方说明#。 稍后我会使用他的服务来破解它。 当然,也可以将其与其他服务进行比较。 过程大概是一样的。
准备
要使用它,第一步当然是注册它的帐户。 注册完成后,我们就可以进入控制台了,类似这样:
在这里我们可以看到账户余额、API KEY、FAQ等配置。 这里最重要的是API KEY,这是我们使用的凭证。 我们复制它,稍后我们将在代码中使用它。
好了,准备工作完成了,下面进入正式内容。
对于V2
上面我们已经介绍了V2的使用和交互过程。 下面我们就介绍一下其识别和绕过的基本流程。 这里我们以官方V2示例网站作为演示。 其网址为: 打开后界面如下:
这里你可以看到一个表单,上面有一些输入框,下面是V2验证码。 要识别这个验证码,首先要找到验证码,这是验证码的唯一标识。 我们打开浏览器的开发者工具,查看页面的源代码。 我们首先找到的源码如下图所示:
可以看到它对应的是一个,我们看到的内容都呈现在里面。 这里我们可以观察到源码最外层的div有一个字段,叫做data-。 这就是我们刚才所说的。 它是验证码的唯一标识符。 比如这里我先保存这个,这里是其他字段。 值为:
1
6Le-wvkSAAAAAPBMRTvw0Q4Muexq9bi0DJwx_mJ-
接下来我们需要告诉这个以及当前页面的URL,以帮助我们识别这个验证码。 告诉我们之后,我们就会利用这些信息来加载对应的验证码,然后利用背后的人力来识别验证码。 ,最后将识别出的信息返回给我们。 好吧,那么接下来你如何讲述这些信息呢? 这很简单。 它为我们提供了一个接口,其接口地址为:,我们只需要将相应的信息发送到这个接口即可。 那么发送时需要哪些参数呢? 我们在这里介绍一下它们:
范围
类型
必须
描述
钥匙
是的
我们自己的 API KEY
是的
、定义破解验证码的方式
是的
的
是的
当前网址
: 0
不
是否可见,1代表隐式验证码,0代表普通验证码。
: 0
不
跨域访问配置
不
回调地址
json
: 0
不
返回格式,1表示返回JSON格式,0表示纯文本,默认0
不
的 ID。 谁获得: 10% 。
不
代理配置
这里我们可以构造一个包含这些参数的 URL:
例如,我在这里构造了这个 URL,内容如下:
1
https://2captcha.com/in.php?key=c0ae5935d807c28f285e5cb16c676a48&method=userrecaptcha&googlekey=6Le-wvkSAAAAAPBMRTvw0Q4Muexq9bi0DJwx_mJ-&pageurl=https://www.google.com/recaptcha/api2/demo&json=1
这时我们可以直接向这个URL发起GET请求。 我们可以直接在浏览器中输入这个URL,也可以使用等待请求库来完成:
1
2
3
4
import requests
response = requests.get(url)
print(response.json())
接口会返回如下格式的内容:
1
{'status': 1, 'request': '62919419695'}
这里它返回JSON格式的数据,代表请求状态。 如果为1,则表示请求成功。 另外,它还包含一个内容为ID的字段。 该ID是识别该验证码的任务的ID。 因为有很多人在幕后帮助识别验证码,所以每个验证码的识别都是分任务的。 每个任务都有一个唯一的 ID。 当任务刚刚被分配时,任务被标记为状态。 然后,这些任务将分配给个人。 识别完成后,该任务会被标记为已识别,并会附有识别后的信息,如内容等。 好了,刚才的接口请求成功后,识别任务就下达了,后面就会有相应的人来识别验证码了。 识别过程可能需要十秒到几十秒不等。 我们可以通过另一个接口获取任务的结果。 获取结果的接口地址为:,我们还需要传入一些参数,参数介绍如下:
范围
类型
必需的
描述
钥匙
是的
API密钥
是的
get,表示获取验证码结果
ID
是的
任务ID就是刚才in.php接口返回的结果。
json
: 0
不
返回JSON格式,1表示使用JSON格式,0表示纯文本格式
这里我们构造一个URL,其中包含以下参数:
这样我们就构造了如下的URL:
1
https://2captcha.com/res.php?&action=get&id=62919419695&json=1 =c0ae5935d807c28f285e5cb16c676a48
同样,我们可以在浏览器中访问或者使用请求来得到如下结果:
1
2
3
4
{
"status": 1,
"request": "03AOLTBLSg0fQUUMtP2o3kvJWNm6zla8MEjP_vPh629-xS-d_QrlJwMcxQfSJMUIU92noqbJ16yt5a0PdB3ORW-5MEbqK7NZ82bTnSZohCG_mYVVv8TbuvM1A99DFvlepxGEKlGCoi5lTHJd5z_QQ2mV1trGlI8VJkHjVAhLZzlz67MVgQzIu7aDl39n6aocAIVueQuCyjmA1C3hUECxpNlXJuXYVD10eJrqY_Bu36_2E0uBrmDIkAIjxCzEZWgadToU4ByLReOrNJ7_4t-P8leTUbPC5YBXvoDZZZByz8-vNnHzUu3GNNESzGSCMFfVPYumnXXI6i7TO5p1k-AElgb7qor6vDJGA_RpNNSUgAj8B0synG9APpbMQ4cEprHXle5pJtNCBX_v_8uqJLobomIx0St5l_H1tHGuTgI2UU-nWmR9TwvKp6SR-6G2Fi6pv7c8350tPbqJWWMcV0AXdfM85GjRDh2t7wh1CMukLQE21aIIwHh88kR0Fh0481Kw_umw8IfFCHyHKu8IcTERUL5LZdDzQkiGdF1wqWP-GhySMXEx-eOT7tB6SqPEAmO_mbwtJtA-qKzcHP"
}
如果返回上述格式的数据,则说明验证码已成功识别,并且识别出返回字段的内容。 我们可以直接将其放入表单中并提交成功。 那么如何使用这个呢? 事实上,如果我们不使用该接口,如果我们手动验证成功,我们会在表单中分配一个名为g--的名称。 如果验证成功,验证后会得到它的值,并作为表单提交的一部分发送到表单。 服务器进行验证。 如果这个字段验证成功,那么就没有问题了。
所以,相当于给我们模拟了点击验证码的过程,而最终的结果其实就是我们应该赋给名字g--的内容。 那么如何赋值呢? 非常简单,使用即可。 我们可以选择这个并直接赋值。 代码如下:
1
document.getElementById("g-recaptcha-response").innerHTML="TOKEN_FROM_2CAPTCHA";
注意这里的值需要替换成我们刚刚得到的值。 当我们做爬虫模拟登录的时候,如果我们使用. 执行后直接提交表单,我们来检查一下请求:
可以看到提交了一个表单,其中一个字段是g--。 它将被发送到服务器进行验证。 如果验证通过,则说明成功。 因此,如果我们在帮助下获得此信息并将其分配给表单,则表单将被提交。 如果有效的话,我们就可以成功绕过登录,而无需我们点击验证码。 最后我们得到如下成功页面:
至此,我们就成功完成了V2验证码的识别。
总结
在本节中,我们将描述用于帮助识别 V2 的过程。 说到这里,我认为工程师使用这样的服务并不是一个可耻的过程,特别是如果他能够以相对较低的价格实现你的需求。 毕竟,您的时间本身就是一种价值。 最后我把这个网站放在下面,有兴趣的朋友可以看一下。 另外,如果你还有想看的关于爬虫的文章,欢迎在下方留言。 我们会选择点赞较多的话题,尽快撰写文章。 谢谢!
/zh
崔庆才
京米崔庆才的个人网站专业为您提供爬虫教程、爬虫、爬虫、爬虫教程、爬虫书籍等信息。 如果您想了解更多详情,请联系我们。
672 条日志
27个类别
230 个标签
邮箱 微博 知乎
分类
链接
标签云
崔庆才
京米崔庆才的个人网站专业为您提供爬虫教程、爬虫、爬虫、爬虫教程、爬虫书籍等信息。 如果您想了解更多详情,请联系我们。
672 条日志
27个类别
230 个标签
邮箱 微博 知乎
分类
链接
标签云