说明:仅供学习使用,请勿用于非法用途,若有侵权,请联系博主删除
作者:zhu6201976
一、目标站点分析
站点:https://www.aqistudy.cn/?mobile=false
难度系数:中级
反爬点:
1.反调试:无限debugger + 禁用F12 + 禁用CTRL+S + 禁用右键 + 检测浏览器内宽高......
2.JS动态返回
3.JS混淆
4.JS加密:请求参数加密且参数不固定 + 响应加密
禁用F12
访问目标网站,按下F12,弹窗提示:
绕过方式:提前打开F12 或 CTRL+SHIFT+I
禁用右键:
绕过方式:代理中间人拦截修改响应检测点
无限debugger
访问目标网站,提前按下F12,进入无限debugger:
绕过方式:never pause here
说明:网站反调试主要集中在以下两个链接,可直接使用mitmweb + Python脚本解决,一劳永逸。
https://www.aqistudy.cn/?mobile=false
https://www.aqistudy.cn/html/city_realtime.php?v=2.3
二、分析流程:
1.无线debugger --> never pause here
2.反调试脚本绕过 mitmweb -p 8890 -s mitmweb_test.py
https://www.aqistudy.cn/?mobile=false --> mitmweb 脚本替换 https://www.aqistudy.cn/html/city_realtime.php?v=2.3 mitmweb 脚本替换
3.encrypt_e9OKk3qfXQqT.js 动态返回 --> GET https://www.aqistudy.cn/html/city_realtime.php?v=2.3 提取js链接 请求
4.解密encrypt_e9OKk3qfXQqT.js
5.补充执行环境依赖 https://www.aqistudy.cn/js/jquery.min.js?v=1.3 静态返回
6.提取 加密函数名称 data加密参数名称 解密函数名称
7.执行加密函数 请求
8.执行解密函数 获取结果
三、代码执行结果
此处以采集 杭州、北京、上海、广州、深圳 五城市当日Aqi数据为例,以下为执行日志:
四、获取完整代码
本项目已开源,原创首发,完整代码详见github:https://github.com/zhu6201976/aqistudy20220801
欢迎star、交流!