如何通过API来通过 reCaptcha

每个网站都不一样,如果以下方式都不能解决问题,烦请您自己多研究研究,您可以的。

 

一、我是小白,不会写代码

没关系,我们可以通过使用chrome进行自动化验证,

具体操作教程可以阅读:YesCaptcha人机助手 ,这个插件是免费的,使用时需要充点数(插件本身免费)

 

二、我是程序员,我会写代码

首先假设我们已经学会怎么判断版本,知道怎么获得基本参数了

如何判断reCaptcha 是什么版本

如何找到reCaptcha 需要的各项参数

然后也学会怎么调用接口,生成识别结果response值了

创建识别任务,获取任务ID:createTask:创建识别任务

再拿任务ID去获取response:getTaskResult : 获取识别结果

如果上面还是不会的话,可以看一下两个DEMO

Python DEMO:requests协议提交 requests_demo.py

Python DEMO:selenium模拟提交 demo_selenium.py

如果你使用的是按钮精灵或者易语言,可以搜索比如:易语言如何调用resfull api接口

如果你使用的是易语言,可以使用我们提供的易语言DEMO

Yescaptcha易语言DEMO(含模拟点击与点击实例)

 

现在我们得到这个resonse值了,然后应该怎么通过这个该死的验证呢?

{ "gRecaptchaResponse": "03AGdBq25SxXT-pmSeBXjzScW-EiocHwwpwqtk1QXlJnGnUJCZrgjwLLdt7cb0..." }

我们要明白,我们这个接口,并不是一个能自动帮你点图片的工具,

这是一个模拟谷歌服务器直接给你返回正确的结果(response)的工具,

你拿到了这个正确的结果(response),接下来就应该把这个结果提交给你要登陆的网站,

告诉它,你已经通过验证了!

 

那么问题来了,应该如何提交给网站呢?一般有两种情况:

1.我们写的是协议提交(post方式)

也就是post数据包的方式提交给网站,

这时候观察一下你正常提交时,浏览器发送的请求的参数名,一般为g-recaptcha-response

不同的网站提交的参数不同,请你自己在浏览器按F12观察发送的请求以及参数名称(是提交给你的网站不是提交给谷歌)

如下图所示,把我们正确的结果(response)提交,就能通过验证了。

这是最简单,也是推荐的方式。

具体代码可以参见:

Python DEMO:requests协议提交 requests_demo.py

 

 

 

2.第二种,模拟操作

我们使用按键精灵,或者Python的selenium自动化工具,在屏幕上点点点操作的方式,

这种叫模拟操作,那么这种如何使用正确的结果(response)提交呢,

请听:我们正常点击之后,在网页上,一般会有一个地方存放这个结果,这个地方一般是这样的:

<textarea id="g-recaptcha-response" name="g-recaptcha-response" class="g-recaptcha-response" ></textarea>

这个地方有一个ID叫g-recaptcha-response的textarea,当你点击正确通过之后,

谷歌会把正确的结果(response)保存在这里,然后随着表单一起提交。

如果我的网站没有一个g-recaptcha-response的元素怎么办呢?

请先手动点击验证码,完成之后不要提交,按F12在elements中按Ctrl+f搜索 03a(识别结果以03a开头),

可能有好几个地方,找到一个元素(不在iframe框架页面下),就是网页中存放识别结果的地方。

 

这时候我们利用的方式就是,把我们通过接口获得的正确的结果(response),写入到这里,然后一起提交。

(这里我们已经通过接口生成了正确的结果(response),所以不再需要去点了!)

 

当然,上面这些步骤,一般来说可以通过 回调函数 来执行,包含写入response等等操作,所以最好是找到回调函数,

具体怎么找到回调函数,可以参考教程:

如何查找reCaptcha系列的回调函数

 

如何和模拟整合

一般来说, 我们推荐用户使用协议, 但是模拟依然可以整合我们的API

reCaptcha 包含两种方式, 一种是非回调, 一种是回调

 

两者有什么区别:

回调:就是网页中已经定义了一个JS的回调函数,我们只需要执行这个函数就可以完成操作,然后提交表单(有些时候,如果没有执行回调函数,提交按钮是灰色不可点击的情况,是因为网页做了限制,执行了回调函数也就解除限制了,所以最好是找到回调函数)

非回调:就是我们找不到回调函数,或者执行之后没有效果,可以使用这种方式(比较原始一点),(如果按钮是灰色之类的限制,还需要执行JS解除限制),然后再提交表单

 

非回调

ReCaptcha 会生成一个 textarea 用来存放 token, 我们可以手动写入

document.getElementById("g-recaptcha-response").innerHTML = "RESPONSE"; document.getElementById("g-recaptcha-response").text= "RESPONSE";

写入完成之后,就可以正常提交表单了,使用JS提交表单的方式很多

可以自己百度一下:如何用JS提交表单,例如:

每个网页的表单id或者存在多个表单,所以请自行研究如何提交表单

 

如果你是使用selenium这类工具,可以直接点击提交按钮,

以selenium 官方DEMO为例:(在顶部有链接)建议仔细看看)

Python DEMO:selenium模拟提交 demo_selenium.py

这样就是点击了提交按钮

 

 

回调

找到回调函数,直接执行回调函数,进行提交验证。

如何查找reCaptcha系列的回调函数