1、 curl to requests https://curlconverter.com/
2、Chrome浏览器 https://www.google.com/chrome/
爬虫逆向和示例
清除cookie,重新加载,找到设置的相关代码
使用xhr监听打断点,找到请求拦截器对应的加密代码
头部参数加密,需要模拟加密,加密参数一般是最开始的某段js代码进行加密的内容
- 搜索关键字 decrypt encrypt JSON.parse 搜索自带的关键字
- 搜索路径
- 跟栈 > > --> 注意栈和栈之间是否从明文变为密文 > > --> 异步栈,看到Promise,去找回调方法
# 一般需要算法包,使用
npm install crypto-js
# 引用
const CryotoJs = require('crypto-js')
- 确定请求地址的栈中是否存在混淆JS
- 搜索decrypt(判断网站是否为算法加密 一般为实例对象》实例方法 比如 a(实例对象).搜索decrypt
- 搜索路径+json.parse( 注意:不是内置的方法函数的界面方法或者函数
- 跟栈response对象的拦截器对象
// 输出words
k = CryptoJS.enc.Utf8.parse("Dt8j9wGw%6HbxfFn")
// 反向解析为字符串
k.toString(CryptoJS.enc.Utf8)推荐使用PyExecJS2+nodejs环境
# 安装 https://pypi.org/project/PyExecJS2/
pip install PyExecJS2# install playwright
pip install pytest-playwright
# Install the required browsers:
playwright install| 网站 | url | 项目位置 | 分类 | 逆向说明 |
|---|---|---|---|---|
| 采招网 | 链接 | bidcenter | 响应数据加密 | 响应数据加密,使用标准的AES加密,依赖crypto-js |
| 申万宏源证券 | 链接 | swhysc | 响应数据加密 | 响应数据加密,加密版AES ,依赖crypto-js |
| 行行查 | 链接 | hanghancha | 响应数据加密 | 响应数据加密,使用标准的AES加密,依赖crypto-js |
| 烯牛数据 | 链接 | xiniudata | 需要登录,请求体加密,响应数据加密 | 请求体和响应数据都有加密,通过搜索关键词来找出加密的代码 ,依赖crypto-js |
| 网易云 | 链接 | wangyiyun | 请求体加密 | 请求体进行了加密,通过xhr监听获取加密的地方,依赖crypto-js |
| 巨潮资讯数据中心 | 链接 | cninfo | 请求头加密 | 请求头进行了验证Accept-EncKey,使用了加密的AES,依赖crypto-js |
| 产业政策大数据平台 | 链接 | spolicy | 请求体加密 | 请求体加密,使用xhr监听打断点,找到请求拦截器对应的加密代码 |
| 雪球 | 链接 | xueqiu | cookie验证 | cookie验证,阿里系awc_sc__v2,清除cookie,重新加载,找到设置的相关代码 |
| 极简壁纸 | 链接 | zzzmh | 响应数据加密 | 响应数据加密,通过xhr断点,找到响应数据解密的地方,解密依赖window环境,使用jsdom来模拟,要下载图片需要搜索关键词down-span 找到设置下载地址的js |
| 艺恩 | 链接 | endata | 响应数据加密 | 响应数据加密,通过xhr断点或者JSON.parse+路径搜索找到加密位置 |
| 全国建筑市场监管公共服务平台 | 链接 | mohurd | 响应加密 | 关键词搜索JSON.parse + 路径搜索确定加密地址,比较坑的是秘钥地址变更了, 通过f.toString(d.a.enc.Utf8)找到新的秘钥 ,依赖crypto-js |
| 1688找工厂 | 链接 | 1688 | 请求cookie和请求体sign签名 | 请求体签名和cookie认证 |
| 七麦数据 | 链接 | qimai | 请求体加验证 | 搜索关键字找不到,通过xhr断点,往下debug,找到加密数据 |
| 娱乐指数 | 链接 | chinaindex | 响应数据加密 | 请求头sign是固定的,响应结果是通过混淆的aes加密的, 依赖crypto-js |
| 全国招标公告公示搜索引擎 | 链接 | ctbpsp | 请求头和响应加密 | 搜索时会构建十几个请求,且每次请求参数oArpptFq都会动态生成,且是在vm中生成,vm中的代码是混淆的,且调用函数经过了转码,可以把数据全部获取,本地实现搜索,使用了DES加解密 |
| 猎聘 | 链接 | liepin | 请求头验证 | 需要生成随机的 Uint8Array |