某潮汐表逆向记录

免责声明:自本文章发布起, 本文章仅供参考,不得转载,不得复制等操作。本文章已对关键信息脱敏,涉及到的技术仅用于交流学习,严禁商用,严禁恶意频繁请求网站,浏览本文章的当事人如涉及到任何违反国家法律法规造成的一切后果由浏览本文章的当事人自行承担与本文章博客主无关。以及由于浏览本文章的当事人转载,复制等操作涉及到任何违反国家法律法规引起的纠纷和造成的一切后果由浏览本文章的当事人自行承担与本文章博客主无关。

前言:这个网站是返回结果加密,比较复杂,本菜鸟觉得难度挺高的,一开始想用selenium之类的自动化工具爬取,发现这里用了canvas画布展示的数据,没法把数据一个个爬下来,遂只能扣代码了。

首先,打开F12开发者工具,进来就是debugger

一、解决debugger

点击停用断点

到这里debugger停止了,可以查看网络接发请求,但是一打断点就会内存爆破,网页随即卡死。

(一)思路一:使用js文件替换的方法

修改这个js代码,将debugger改写为console.log(1),再分别使用reqable和playwright方法替换js文件,发现网站无法打开,不断调试,发现就算我没改写debugger语句,用原来的代码原模原样的替换,网页也无法打开,不知道如何解决,遂放弃。

(二)思路二:“永不在此暂停”

【爬虫】网站反debugger、内存爆破以及网站限制开发者工具_debugger 直接断-优快云博客不断查找资料,发现这篇文章和我的情况类似,参考他的方法,使用“用不在此暂停”,发现我这里有两个debugger,都点上,发现可以打断点调试了,遂解决。(过久了还是会网页卡死,但是已经够用了)

二、分析数据接口

请求负载:

网络响应:

通过观察发现,这里token是写死的,只需要将响应中的data进行解密,接下来就是找到解密的位置,把代码扣下来

三、找到解密代码

(一)思路一:通过关键词搜索的方法找到解密代码

想通过全局搜索Json.parse、parse、[’parse']、data、['data'],decrypt等关键词找到解密代码,失败,遂放弃

(二)思路二:通过断点调试一步一步找到解密位置

因为是响应数据解密,直接从堆栈的最后一步进入调试

一直打断点,发现在这里👇的时候,网站的图表中会出现新的数据点,那么解密代码就在这一步内,进入按此方法继续找

发现在这里👇图表出现了新的数据点,进入继续找

再一个函数👇,进入继续找:

一直调试、进入了这个混淆js代码中,稍喜,终于进入了主题,因为之前都是在jQuery的JS文件中,加密代码肯定不是在那个里面

一路调试,最后进入了这个解密代码:

这个代码实在是复杂,遂丢入通义千问中,大概的意思就是_0x42f00e函数传入了atob函数和 _0xc3a817[_0x4773('0xe8', 'Lhk6')]这个参数,将生成的结果用pako的库中的 inflate 方法解压,其中atob函数作用是将 base-64 编码的字符串转换为二进制数据,pako的库中的 inflate 方法是将二进制数据解压得到其原始内容。

进入_0x42f00e函数,发现就是返回了atob[_0xc3a817[_0x4773('0xe8', 'Lhk6')]],其中_0xc3a817[_0x4773('0xe8', 'Lhk6')]就是接口中的加密数据,

使用js编写代码对数据进行解密,仅仅只用4行就得到解密后的数据了,这个网站设置了很多反爬措施,难度颇高,最后的解密代码又十分简短,个人觉得设计得很巧妙,这里就不贴源码了,仅提供思路,供学习参考,再次强调,禁止商用,禁止恶意频繁请求网站,禁止违法使用。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值