每个网站都不一样,如果以下方式都不能解决问题,烦请您自己多研究研究,您可以的。
一、我是小白,不会写代码
没关系,我们可以通过使用chrome进行自动化验证,
具体操作教程可以阅读:/wiki/spaces/YESCAPTCHA/pages/64196594,这个插件是免费的,使用时需要充点数(插件本身免费)
如果是recaptchaV2或者是hcaptcha验证码,
还可以使用我们的付费插件(插件需要购买授权),使用时需要充点数(插件本身也需要收费)
二、我是程序员,我会写代码
首先假设我们已经学会怎么判断版本,知道怎么获得基本参数了
然后也学会怎么调用接口,生成识别结果response值了
创建识别任务,获取任务ID:createTask:创建识别任务
再拿任务ID去获取response:getTaskResult : 获取识别结果
如果上面还是不会的话,可以看一下两个DEMO
如果你使用的是按钮精灵或者易语言,可以搜索比如:易语言如何调用resfull api接口
如果你使用的是易语言,可以使用我们提供的易语言DEMO
现在我们得到这个resonse值了,然后应该怎么通过这个该死的验证呢?
{ "gRecaptchaResponse": "03AGdBq25SxXT-pmSeBXjzScW-EiocHwwpwqtk1QXlJnGnUJCZrgjwLLdt7cb0..." }
我们要明白,我们这个接口,并不是一个能自动帮你点图片的工具,
这是一个模拟谷歌服务器直接给你返回正确的结果(response)的工具,
你拿到了这个正确的结果(response),接下来就应该把这个结果提交给你要登陆的网站,
告诉它,你已经通过验证了!
那么问题来了,应该如何提交给网站呢?一般有两种情况:
1.我们写的是协议提交(post方式)
也就是post数据包的方式提交给网站,
这时候观察一下你正常提交时,浏览器发送的请求的参数名,一般为g-recaptcha-response
,
不同的网站提交的参数不同,请你自己在浏览器按F12观察发送的请求以及参数名称(是提交给你的网站不是提交给谷歌)
如下图所示,把我们正确的结果(response)提交,就能通过验证了。
这是最简单,也是推荐的方式。
具体代码可以参见:
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等等操作,所以最好是找到回调函数,
具体怎么找到回调函数,可以参考教程:
如何和模拟整合
一般来说, 我们推荐用户使用协议, 但是模拟依然可以整合我们的API
reCaptcha 包含两种方式, 一种是非回调, 一种是回调
两者有什么区别:
回调:就是网页中已经定义了一个JS的回调函数,我们只需要执行这个函数就可以完成操作,然后提交表单(有些时候,如果没有执行回调函数,提交按钮是灰色不可点击的情况,是因为网页做了限制,执行了回调函数也就解除限制了,所以最好是找到回调函数)
非回调:就是我们找不到回调函数,或者执行之后没有效果,可以使用这种方式(比较原始一点),(如果按钮是灰色之类的限制,还需要执行JS解除限制),然后再提交表单
非回调
ReCaptcha 会生成一个 textarea 用来存放 token, 我们可以手动写入
document.getElementById("g-recaptcha-response").innerHTML = "RESPONSE"; document.getElementById("g-recaptcha-response").text= "RESPONSE";
写入完成之后,就可以正常提交表单了,使用JS提交表单的方式很多
可以自己百度一下:如何用JS提交表单,例如:
document.getElementById("form").submit();
每个网页的表单id或者存在多个表单,所以请自行研究如何提交表单
如果你是使用selenium这类工具,可以直接点击提交按钮,
以selenium 官方DEMO为例:(在顶部有链接)建议仔细看看)
driver.find_element_by_id("recaptcha-demo-submit").click()
这样就是点击了提交按钮
回调
找到回调函数,直接执行回调函数,进行提交验证。