点选验证码js逆向识别进行360url提交
一般我们遇到点选验证码的时候,最简单的方式就是通过selenium调用浏览器,对验证码区域定位截图然后调用平台识别文字坐标。但是用selenium是比较麻烦的。我们还可以用js逆向识别参数生成方式,最后再用接口调用,下面就举例一下360提交的点选验证码js逆向调用。

对于这样的点选验证码,我们要知道图片的生成方式以及验证通过需要的参数信息,可以看到这个接口返回的就是图片的信息了以及token信息。

我们试着手动点击通过下,看一下有没有接口请求响应

可以看到在手动验证通过后,返回了接口的信息,这里的validate是后面需要的字段信息。

看一下请求参数,发现w字段信息,是我们完成点选验证后,生成的加密信息。

断点进入w加密生成的js中,这个就是生成的具体位置,这个y就是w字段的值。在上面进行断点拦截,对y进行分析。

再进入m方法中,可以看到这个w生成方式使用aes加密逻辑生成的。

接下来我们看一下t,o,e,r字段是什么。可以发现t是生成可变信息,里面position是需要识别文字的坐标信息。o是e和r生成的可变json数据,而e是token信息,r是固定值。

那么接下来,在代码中进行加密逻辑还原。这样w的生成信息,在控制台就看到了。

提醒一下哦,这里的t中的position是文字坐标信息,可变的。需要对接平台去识别坐标。还有就是图片需要需要等比例压缩以及图片去背景。

最后拿到w生成的值后,再进行接口请求。然后返回的信息中就是上图4中validate信息了。
def checkcode(token,w):
url = 'https://captcha.antispam.360.cn/clicaptcha/check'
params = {
'callback': 'Q360_%d'%(int(time.time()*1000)),
'referer': 'https://info.so.com/site_submit.html',
'id': 'PGBSHey0ZeCkhQm3qWTlwp16QCCChLtw',
'type': 'inset',
'Q_UDID': 'ec99bdfa-53b0-b87e-6fae-1cdde372c869',
'fp': 'f4b8aa06f507c275c21e55c4dd698d96',
'version': '1.2.2',
'token': token,
'w':w
}
resp = session.get(url=url,params=params,headers=headers)
print(resp.text)再把validate信息放入接口进行提交
def push():
url = 'https://info.so.com/index.php?a=submit&m=Index&g=Embody'
params = {
'a': 'submit',
'm': 'Index',
'g': 'Embody'
}
data = {
'websitetype': '企业官网',
'icp': 'xx备20220xxx0649号',
'url': 'http:// www.seoyiwu.com',
'email': 'danmoln@163.com',
'checkcode': 'bf81febaf94ae62498f64863b336b571',
'__hash__': 'f9e17cffc685611b2f47e1d74e589e12_6fad2bf6dcb7c7b100cf080e44ff1bda'
}
resp = requests.post(url=url,headers=headers,data=data,params=params).text
print(resp)
声明本代码仅供学习使用,不可非法使用,一切行为与本人无关哈,需要源码的可以私信我,另外出售旋转验证码角度api和模拟快排源码,需要的可以在http://www.seoyiwu.com了解信息。





