点选验证码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了解信息。