网站建设策划书悠悠,网络文章发布平台,建设主题网站的顺序是什么意思,怎么做网站平台梦想一、数据接口分析
主页地址#xff1a;某蜂窝
1、抓包
通过抓包可以发现数据是静态的#xff0c;在html中。
2、判断是否有加密参数
请求参数是否加密#xff1f; 无请求头是否加密#xff1f; 无响应是否加密#xff1f; 无cookie是否加密#xff1f; 通过查看“c…一、数据接口分析
主页地址某蜂窝
1、抓包
通过抓包可以发现数据是静态的在html中。
2、判断是否有加密参数
请求参数是否加密 无请求头是否加密 无响应是否加密 无cookie是否加密 通过查看“cookie”模块可以发现cookie中携带了加密参数__jsl_clearance_s和__jsluid_s
二、加密位置定位
1、分析
因为是请求静态页面时携带了cookie所以肯定在这个请求之前还有其他请求在“应用”模块中将cookie全部清除 再次刷新页面观察抓包可以发现在获取到正常的html页面之前网站获取到了两个状态码是521的响应。 但是在“响应”模块中无法加载响应数据所以我们可以使用Python发包看看返回的响应是什么。可以发现第一次请求网站返回的响应中是一段js代码而且可以看出是设置cookie中的__jsl_clearance_s参数的同时响应头中还设置了__jsluid_s参数而且这个js代码只是一段简单的字符拼接。 携带这两个cookie再次发送请求可以发现网站返回的还是js代码而且这次的js代码还是混淆的。 我们将响应的js代码放入到js文件中再使用ast解混淆可以发现在这段js代码中重新设置了cookie中的__jsl_clearance_s参数cookie值的生成是使用的_0xa4b0eb方法(每次请求方法名可能会不同根据位置找即可)。 所以我们将_0xa4b0eb方法扣出在_0xa4b0eb方法中还用到了一个hash同样将hash扣出即可。运行代码发现可以生成cookie值。 但是当我们通过请求调用js进行生成可以发现有时候可以生成有时候又生成不了。这个时候我们对比传入方法中的ha的值可以发现可以生成的是sha1生成不了的是md5还有sha256。再对比代码可以发现ha的值不同hash这个方法也不同所以我们就需要根据ha的值进行处理。同时可以怀疑hash这个方法就是md5加密或者sha加密。 这时我们就需要验证一下hash是不是标准的加密算法。我们将cookie清空同时勾选上“事件监听器断点”中的“脚本”再次刷新页面。 等断到上方分析的这个js代码段的时候往下找到hash方法的调用位置hash方法有时候可能会混淆可以根据代码结构找到大概位置下断点。断住之后在控制台中调用hash方法加密字符串1再拉到源代码最底部查看ha的值发现是sha256同时hash加密出的密文与标准模块一致。同样的步骤可以验证出md5与sha1都是标准算法所以可以将hash方法使用标准模块代替。
三、源代码
JavaScript源码
const CryptoJS require(crypto-js)var _0x442d45 new Date();function _0x29a569(_0x4c0f0f, _0x4ac451, _0xff3a7) {var _0x2aba4e _0xff3a7[chars][length];for (var _0x5e8fd5 0; _0x5e8fd5 _0x2aba4e; _0x5e8fd5) {for (var _0x32eaed 0; _0x32eaed _0x2aba4e; _0x32eaed) {var _0x2f5939 _0x4ac451[0] _0xff3a7[chars][substr](_0x5e8fd5, 1) _0xff3a7[chars][substr](_0x32eaed, 1) _0x4ac451[1];var hash;switch (_0xff3a7[ha]) {case md5: {hash CryptoJS.MD5break;}case sha256: {hash CryptoJS.SHA256break}case sha1: {hash CryptoJS.SHA1break}}if (hash(_0x2f5939).toString() _0x4c0f0f) {return [_0x2f5939, new Date() - _0x442d45];}}}
}function get_cookie(_0xff3a7) {return _0x29a569(_0xff3a7[ct], _0xff3a7[bts], _0xff3a7);
}python源码 Email912917367qq.com
Date: 2023/9/7 11:27 import json
import reimport execjs
import requestsclass Spider:def __init__(self):self.session requests.session()self.session.headers {User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/116.0.0.0 Safari/537.36,authority: www.mafengwo.cn,referer: https://www.mafengwo.cn/,}with open(reverse.js, r, encodingutf-8) as f:self.js_obj execjs.compile(f.read())def send1(self):response self.session.get(https://www.mafengwo.cn/i/24326610.html)cookie re.findall(rdocument.cookie(.*?);location.href, response.text)[0]cookie self.js_obj.eval(cookie).split(;)[0]cookie_list cookie.split()self.session.cookies[cookie_list[0]] cookie_list[1]def send2(self):response self.session.get(https://www.mafengwo.cn/i/24326610.html)go re.findall(r;go\((.*?)\)/script, response.text)[0]go json.loads(go)cookie self.js_obj.call(get_cookie, go)self.session.cookies[go[tn]] cookie[0]def send3(self):response self.session.get(https://www.mafengwo.cn/i/24326610.html)print(response.text)if __name__ __main__:s Spider()s.send1()s.send2()s.send3()