谷歌验证码 ReCaptcha 破解教程,简单方便从零开始。 | 您所在的位置:网站首页 › pixiv验证码加载失败 › 谷歌验证码 ReCaptcha 破解教程,简单方便从零开始。 |
很久没有做爬虫破解类相关的分享了,之前交流群里有朋友提问谷歌系的reCAPTCHA V2 验证码怎么破,因为工作的原因我是很久之后才看到的,也不知道那位朋友后来成功了没有。所以今天就来跟大家分享一下 reCAPTCHA V2 的破解。 (小马补充:想加交流群的朋友,进入公众号下方,点击技术交流,有读者群和交流群,点击后都会弹出崔老师的二维码,扫微信二维码拉群~) 如果大家访问国外的一些网站的话,想必肯定见过这样的一个验证码,它上面写着「I’m not a robot」,意为「我不是机器人」,验证码长这个样子: 之前我在写上一篇如何识别滑动验证码问题的时候,当时朋友留言问我能不能做一个机器学习的,我回复了,我说当然没问题,你等着,我这周就做。 我那周从周一做到周五,我记得用的应该是 yolo,反复修改,小马还经常过来催崔稿,耗费良久,然后就在那周周五晚上的23:59分,我灵机一动,终于明白了。 去他的机器学习,有服务不好吗? reCAPTCHA 本身比极验还要复杂,国内网站我暂时没看到破解的,然后这次是用的俄罗斯的一个服务商 2Captcha 提供的 图像识别和一系列行为验证码的识别服务。 要使用 2Captcha,第一步当然是注册一下它的账号了,注册完成之后我们可以进入到 2Captcha 的控制台,类似于这样子: 在上文我们已经介绍过 reCAPTCHA V2 的使用和交互流程了,下面我们来介绍下其识别和绕过的基本流程。 在这里我们就拿官方的 reCAPTCHA V2 的示例网站来做演示吧,其网址为:https://www.google.com/recaptcha/api2/demo,打开之后界面如下所示: 下一步,我们就需要将这个 sitekey 和当前页面的 URL 告诉 2Captcha,让 2Captcha 来帮助我们识别这个 reCAPTCHA 验证码,告诉 2Captcha 之后,2Captcha 会利用这些信息加载出对应的验证码,再利用其背后的人力来对验证码进行识别,最后将识别得到的 token 返回给我们即可。 好,那么接下来怎么把这个信息告诉 2Captcha 呢? 很简单,2Captcha 为我们提供了一个接口,其接口地址为:https://2captcha.com/in.php,我们只需要将对应的信息发送到这个接口就好了。 那么发送需要什么参数呢,在这里介绍一下: 参数 类型 必须 描述 key String Yes 我们自己的 API KEY method String Yes userrecaptcha,定义破解 reCAPTCHA 验证码的方式 googlekey String Yes reCAPTCHA 的 sitekey pageurl String Yes reCAPTCHA 当前所在的 URL invisible Integer Default: 0 No 是否可见,1 代表是隐式验证码,0 代表普通验证码。 header_acao Integer Default: 0 No 跨域访问配置 pingback String No 回调地址 json Integer Default: 0 No 返回格式,1 代表返回 JSON 格式,0 代表纯文本,默认 0 soft_id Integer No ID of software developer. Developers who integrated their software with 2captcha get reward: 10% of spendings of their software users. proxy String No 代理配置 在这里我们可以构造一个 URL,它包括这几个参数: key:注意这里的 KEY 换成你自己的 API KEY method:直接赋值 userrecaptcha googlekey:复制的 sitekey pageurl:当前 URL json:直接赋值 1,代表返回 JSON 格式比如在这里我就构造了这个 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,也可以使用 requests 等请求库来完成: 1234 import requestsresponse = requests.get(url)print(response.json())接口会返回如下格式的内容: 1 {'status': 1, 'request': '62919419695'}这里它返回了一个 JSON 格式的数据,其中 status 代表请求状态,如果是 1 的话,代表请求成功,另外其还会包含一个 request 字段,其内容是一个 ID,这个 ID 就是识别这个验证码的任务的 ID。因为 2Captcha 背后有很多人来帮助识别验证码,所以 2Captcha 将每个验证码的识别划分为一个个任务,每个任务都有一个唯一的 ID,刚分配任务时,这个任务被标记为 NOT_READY 状态。这些任务接下来会被分发给一个个人,识别完成之后,该任务就会被标记为已经识别状态,同时附有识别之后的信息,如 token 等内容。 好,刚才的接口请求成功之后,这个 reCAPTCHA 的识别任务就已经被下发了,其背后会有对应的人来对这个 reCAPTCHA 验证码进行识别,识别过程可能需要十几秒到几十秒不等,我们可以通过另一个接口来获取任务的结果。 获取结果的接口地址为:https://2captcha.com/res.php,同样我们需要传入一些参数,其参数介绍如下: 参数 类型 必需 描述 key String Yes API KEY action String Yes get,表示获取验证码的结果 id Integer Yes 任务 ID,就是刚才 in.php 接口返回的结果。 json Integer Default: 0 No 返回 JSON 格式,1 代表使用 JSON 格式,0 代表纯文本格式 在这里我们构造一个 URL,它包括如上的参数: key:在这里换成你的 API KEY action:就直接赋值 get id:任务 ID json:在这里用 1,即返回 JSON 格式数据这样我们就构造了如下的 URL: 1 https://2captcha.com/res.php?key=c0ae5935d807c28f285e5cb16c676a48&action=get&id=62919419695&json=1同样我们可以在浏览器中访问或者用 requests 请求,得到如下结果: 1234 { "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"}如果其返回的是如上格式的数据,就代表 reCAPTCHA 验证码已经识别成功了,其返回的 request 字段的内容就是识别的 token,我们直接拿着这个 token 放到表单里面提交就成功了。 那这个 token 怎么来用呢? 其实如果不走 2Captcha 接口,我们如果人工验证成功之后,在其表单里面会把一个 name 叫做 g-recaptcha-response 的 textarea 赋值,如果验证成功,它的 value 值就是验证之后得到的 token,这个会作为表单提交的一部分发送到服务器进行验证。如果这个字段校验成功了,那就没问题了。 注意这里的 TOKEN_FROM_2CAPTCHA 需要换成刚才我们所得到的 token 值。我们做爬虫模拟登录的时候,假如是用 Selenium、Puppeteer 等软件,在模拟程序里面,只需要模拟执行这段 JavaScript 代码,就可以成功赋值了。 执行之后,直接提交表单,我们查看下 Network 请求: 本节我们介绍了利用 2Captcha 来帮助识别 reCAPTCHA V2 的流程。那应该来讲,我觉得工程师使用这样的服务并不是一种令人羞耻的过程,尤其是他可以以比较低的价格实现你的需求的情况下。毕竟你的时间,本身就是一种价值。 最后 2Captcha 这个网站我放在下面,有感兴趣的朋友可以看一下。另外如果有什么爬虫方面想看的文章,也欢迎在下面留言,我们会挑选被点赞较多的主题尽快写文。谢谢! 2captcha.com/zh |
CopyRight 2018-2019 实验室设备网 版权所有 |