当前位置:淡墨SEO首页 > SEO软件 > js逆向百度旋转验证码并通过验证

js逆向百度旋转验证码并通过验证

淡墨SEO3年前 (2022-09-06)SEO软件19130

在公众号之前的一篇文章写到用pyppeteer模拟轨迹进行识别。https://mp.weixin.qq.com/s/aHeYmRMx4NIfN5shch-WfA 大家可以自行前往学习了解。本次带来一个更加轻松的识别通过,就是通过js完成距离通过验证。下面就主要讲解一下思路,具体操作验证还需要完善一下代码。

image.png

旋转验证码逆向的主要问题是解决动态参数,只要解决动态的参数的来源就可以。经过测试发现fs是变化的


image.png

进入断点测试,给相应位置打上断点。可以看到fs是通过AES加密

image.png


image.png


除了fk字段需要通过补js环境进行还原,其次就是as、backstr字段需要获取,这个可以requests模拟请求进行解析获取即可

image.pngimage.png

然后就是angle角度的识别,角度的识别,推荐文章:预测旋转角度推荐nanda大佬的文章:https://mp.weixin.qq.com/s/G5Bm0DfoUDy_a2KOc_gNRw 


在r.rzData中ac_c=round((o / 212),2),而o是滑动的距离,o=angle*212/360 (angle)是识别的角度。然后backstr是前面返回的,其他的所有参数都可固定,包括轨迹。那么ac_c =  (angle*212/360/212).toFixed(2).


接下来在代码中进行复现还原一下。


首先是获取旋转图片和backstr,图片地址和backstr都会在这个请求中响应,拿到响应数据就可以进行解析了。


image.png


 def getImg(self):
       
        self.session.get(self.url,headers=self.headers)
        params = {
            'callback': 'jQuery110204891335603986202_' + str(time.time()*1000),
            'ak':'c27bbc89afca0463650ac9bde68ebe06',
            'tk':'5186ttnIrhB1fBEkLt2uExpiLynx575uW1bx1HchF8dIw5m1j2PMQ5M4LGvMDVkzsNJED+1NmBKZjNwb+DoGQMwpSEETXal5AvVi9LjiHsOc9nnbIpz1iydwbSFWtFQKl2ggAufwNwxaINHUAZKgbwb5zQ==',
            'scene':'',
            'isios': 0,
            'type': 'spin',
            '_': str(time.time()*1000)
        }
        styleUrl = 'https://wappass.baidu.com/viewlog/getstyle'
        resp = self.session.get(url=styleUrl,headers=self.headers,params=params).text
        jsonStr = re.findall(r'.*?\((.*?)\)',resp,re.S)[0]
        jsonDict = json.loads(jsonStr)
        print(jsonDict)
        self.backstr = jsonDict['data']['backstr']
        print(self.backstr)
        imgUrl = unquote(jsonDict['data']['ext']['img'])
        imgContent = self.session.get(url=imgUrl,headers=self.headers).content
        image = Image.open(BytesIO(imgContent))
        image.save('1.png')

这样运行后,图片就保存到本地了,我们在本地查看一下待旋转的图片


image.png



其次就是获取as字段信息,as字段在一开始的请求响应中会出现,同样解析一下就可以获取

def getAs(self):
        self.session.get(self.url,headers=self.headers)
        params = {
            'callback': 'jQuery110204591104788231357_' + str(time.time()*1000),
            'ak':'c27bbc89afca0463650ac9bde68ebe06',
            '_': str(time.time()*1000)
        }
        resp = self.session.get(url=self.verifyUrl,headers=self.headers,params=params).text
        jsonStr = re.findall(r'.*?\((.*?)\)',resp,re.S)[0]
        jsonDict = json.loads(jsonStr)
        self.aas = jsonDict['data']['as']
        print(self.aas)


接下来重要的就是补crypto.js环境,然后获取fk字段参数信息。这里的r就是最终的fk字段信息了。

image.png

在python代码中调用fk信息。

def getFk(self):
        with open('code.js','r') as f:
            codejs = f.read()
        aesObj = execjs.compile(codejs).eval(f"get_fk({self.aas},{self.angle},{self.backstr})")


一切准备就绪,剩下的就是运行了,只要运行的op=1,那么验证码就识别通过了。

image.png


核心问题已经解决,由于时间关系,具体运行代码还需要完善,完善过后就可以正常调用接口进行识别距离,并通过验证。如果有朋友百度旋转验证码感兴趣,可以私信我获取源码,并教会大家使用。但是需要一定的有偿获取。

扫描二维码推送手机访问

文章内容均为原创,禁止转载!

本文链接:http://www.danmoseo.com/news/14.html

标签: js逆向

相关文章

实战js逆向某度旋转验证码并验证通过

实战js逆向某度旋转验证码并验证通过

前段时间在写逆向旋转验证码的时候,文章在js逆向百度旋转验证码并通过验证 在文章中js逆向配合角度识别是可以通过接口完成验证的。虽然逆向代码是没问题的,但是缺少实际测试。本次就测试一下,以及发现的问题。源码获取:》》》百度旋转验证码逆向源码视频介绍:首先在测试的时候的发现的问题,一是百度旋...

点选验证码js逆向识别进行360url提交

点选验证码js逆向识别进行360url提交

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

搜狗站长平台推送,站点和非站点都可提交

搜狗站长平台推送,站点和非站点都可提交

日常做网站seo的时候,离不开对url的推送,这也是对应站长平台提供的链接提交服务,本次就搜狗站长平台批量提交,做一个推送讲解和示例。封装软件发货传送门》》搜狗站长平台推送视频演示:如下图就是网页推送的界面,如果每次都要手动去输入提交,想必效率和耐心都跟不上,而且想要做到批量提交,肯定要借助一个开发...

多进程线程查询关键词排名,速度达到1秒10个!

多进程线程查询关键词排名,速度达到1秒10个!

python多线程有两种,一种是多进程,另一种是多线程,对于线程基础知识层面,线程运行在进程中,一个进程可以有多个线程,而多线程只能在一个进程中运行。所以在多线程并发运行的同时,开启多进程进行并行操作。这样就可以最大化的利用计算机cpu的内核。需要源码的可以在我的商城获取>>>百度...

百度站长平台js逆向登录解析

百度站长平台js逆向登录解析

在我们使用百度站长平台看看网站数据信息的时候,肯定要先登录才能获取,那么就需要在网页上进行登录,然后才能看到网站一些信息以及做一些操作比如二级域名绑定,抓取诊断、关键词查看等。那如果要代码进行这些操作的话,要解决逆向登录的问题,或者不解决登录的话,在网页上获取cookie进行复制再进行代码操作。本次...