# 爬虫逆向
本项目记录一些学习爬虫逆向的案例,仅供学习参考,请勿用于非法用途。
目前已完成:**[网易易盾](#yidun)、[微信小程序反编译逆向(百达星系)](#wechat)、[极验滑块验证码](#jiyan)、[同花顺](#tonghuashun)、[rpc实现解密](#rpc)、[工业和信息化部政务服务平台(加速乐)](#jiasule)、[巨量算数](#juliang)、[Boss直聘](#boss)、[企查查](#qichacha)、[中国五矿](#wukuang)、[qq音乐](#qqmusic)、[产业政策大数据平台](#cyzc)、[企知道](#qizhidao)、[雪球网(acw_sc__v2)](#xueqiu)、[1688](#1688)、[七麦数据](#qimai)、[whggzy](#whggzy)、[企名科技](#qiming)、[全国建筑市场监管公告平台](#mohurd)、[艺恩数据](#endata)、[欧科云链(oklink)](#oklink)、[度衍(uyan)](#uyan)、[凤凰云智影院管理平台](#fenghuang)**
点击以上链接可跳转到对应文档位置,代码路径格式为**"月份/网站名称/"**。
### 环境安装:
npm install
pip install -r requirements.txt
### <span id='whggzy'>一、whggzy(接口参数)</span>
#### 1.1 搜索响应数据找到接口
接口为 “http://www.whggzy.com/front/search/category”
![image-20230602094847529](https://raw.githubusercontent.com/ChenZixinn/img_repository/master/image-20230602094847529.png)
#### 1.2 设置header和data
将接口的headers和data传入,并进行测试
```python
headers = {
# 这两个参数是必须的
"User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/113.0.0.0 Safari/537.36",
"Referer": "http://www.whggzy.com/PurchaseAdvisory/index.html",
}
# 通过查看参数发现data传的是字符串,所以这个通过字符串的方式发送data,而不是字典
data = {
"categoryCode": "MostImportant",
"pageNo": 1,
"pageSize": 15
}
```
**访问后报错**
#### 1.3 断点调试
在源代码->xhr/提取断点中加入断点,观察到headers的参数,且data参数为字符串
![image-20230602095429289](https://raw.githubusercontent.com/ChenZixinn/img_repository/master/image-20230602095429289.png)
##### 完整代码
```python
import requests
url = "http://www.whggzy.com/front/search/category"
headers = {
# 这两个参数是必须的
"User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/113.0.0.0 Safari/537.36",
"Referer": "http://www.whggzy.com/PurchaseAdvisory/index.html",
# 通过xhr断点找到接口的headers包含一下几个
'Accept': "*/*",
'Content-Type': "application/json",
'X-Requested-With': "XMLHttpRequest",
}
# 通过查看参数发现data传的是字符串,所以这个通过字符串的方式发送data,而不是字典
data = '''{
"categoryCode": "MostImportant",
"pageNo": 1,
"pageSize": 15
}'''
print(requests.post(url, headers=headers, data=data).text)
```
### <span id='qiming'>二、企名科技(数据加密)</span>
url: https://www.qimingpian.com/finosda/project/pinvestment
#### 2.1 搜索数据
搜索不到数据,判断为通过ajax数据加密
找到接口:
![image-20230602114517059](https://raw.githubusercontent.com/ChenZixinn/img_repository/master/image-20230602114517059.png)
#### 2.2 断点调试
找到js文件
![image-20230602114651972](https://raw.githubusercontent.com/ChenZixinn/img_repository/master/image-20230602114651972.png)
找到加密数据的方法:
![image-20230602104759972](https://raw.githubusercontent.com/ChenZixinn/img_repository/master/image-20230602104759972.png)
```js
// 还需要找到o方法和decode方法,整合成js文件
function s(e) {
return JSON.parse(o("5e5062e82f15fe4ca9d24bc5", a.a.decode(e), 0, 0, "012345677890123", 1))
}
```
#### 2.3 调用接口获取数据,放入js方法中解密
```python
import json
import execjs
import requests
url = 'https://vipapi.qimingpian.cn/DataList/productListVip'
headers = {}
data = {}
# 打开js文件
with open("./demo2_qiming.js", "r") as f:
jscode = f.read()
# 调用api接口拿到加密数据
resp = requests.get(url, headers=headers, data=data).json()
# 调用js文件
ctx = execjs.compile(jscode).call('s', resp["encrypt_data"])
print(ctx)
print(f"type:{type(ctx)}")
```
### <span id='mohurd'>三、全国建筑市场监管公告平台</span>
url: https://jzsc.mohurd.gov.cn/data/company
#### 3.1 获取数据
接口:https://jzsc.mohurd.gov.cn/APi/webApi/dataservice/query/comp/list?pg=0&pgsz=15&total=0
数据经过加密,data: 95780ba09437300...
#### 3.2 查找js
通过接口名称找到js文件,在js文件里搜索JSON.parse,打断点进行调试
![image-20230602142415295](https://raw.githubusercontent.com/ChenZixinn/img_repository/master/image-20230602142415295.png)
#### 3.3 js解密
常见js算法:crypto-js、jsdom、hash、md5、逆向算法
判断使用的加密是CryptoJS,使用npm安装库后导入,替换原始js里使用的方法
```js
const CryptoJS = require('crypto-js')
// 常见js算法:jsdom hash md5 逆向算法
function m(t) {
// d.a是CryptoJS
var f = CryptoJS.enc.Utf8.parse("jo8j9wGw%6HbxfFn")
var h = CryptoJS.enc.Utf8.parse("0123456789ABCDEF")
var e = CryptoJS.enc.Hex.parse(t),
n = CryptoJS.enc.Base64.stringify(e),
a = CryptoJS.AES.decrypt(n, f, {
iv: h,
mode: CryptoJS.mode.CBC,
padding: CryptoJS.pad.Pkcs7
}),
r = a.toString(CryptoJS.enc.Utf8);
return r.toString()
}
```
### <span id='endata'>四、endata(js混淆)</span>
url: https://www.endata.com.cn/BoxOffice/BO/Year/index.html
#### 4.1 获取数据
```python
url = "https://www.endata.com.cn/API/GetData.ashx"
headers = {} # 略
data = {} # 略
ori_data = requests.post(url, headers=headers, data=data).text
"""
out:
AFB3D177A5D1D916CFEFBE70FEFC0C59C0463AE137DE1A099C4B169B8AB9DBC33EE55B1...(加密数据)
"""
```
#### 4.2 搜索加密接口
![](https://raw.githubusercontent.com/ChenZixinn/img_repository/master/image-20230602153850946.png)
#### 4.3 js
通过断点找到加密的方法,方法经过了js混淆,直接复制方法,执行这个方法,根据提示补齐所有缺失的属性。
![image-20230602154006084](https://raw.githubusercontent.com/ChenZixinn/img_repository/master/image-20230602154006084.png)
#### 4.4 navigator
js代码中存在一个navigator属性,为环境属性,需要手动写入
```js
global.navigator = {'userAgent': "node.js"}
```
#### 4.5 结合接口完成代码
```python
"""js混淆"""
import execjs
import requests
url = "https://www.endata.com.cn/API/GetData.ashx"
headers = {
"User-Agent":"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/113.0.0.0 Safari/537.36"
}
data = {
"year": 2023,
"MethodName": "BoxOffice_GetYearInfoData"
}
ori_data = requests.post(url, headers=headers, data=data).text
with open("./endata.js", 'r') as f:
js_code = f.read()
result = execjs.compile(js_code).call("webInstace.shell", ori_data)
print(result)
# (webInstace.shell(data));
```
### <span id='1688'>五、1688</span>
url: https://sale.1688.com/factory/category.html?spm=a260k.22464671.home2019category.1.6e517a6exMGJcG&mainId=10166
#### 5.1 查看接口
有加密参数,找这个参数的js文件
![](https://raw.githubusercontent.com/ChenZixinn/img_repository/master/image-20230602100140806.png)
![](https://raw.githubusercontent.com/ChenZixinn/img_repository/master/image-20231022161547651.png)
#### 5.2 搜索加密参数
**sign参数的组成:**token & 时间戳 & g & 请求参数,数据均没有变化
再经过h函数
![image-20230602100323351](https://raw.githubusercontent.com/ChenZixinn/img_repository/master/image-20230602100323351.png)
#### 5.3 得到sign
```python
# 请求的参数
data = '{"cid":"FactoryRankServiceWidget:FactoryRankServiceWidget","methodNa
没有合适的资源?快使用搜索试试~ 我知道了~
python爬虫各个网站集合+js逆向(whggzy+qiming+mohurd+endata+1688+cinfo+qq-m)
共70个文件
py:30个
js:30个
ds_store:2个
需积分: 5 0 下载量 21 浏览量
2023-11-25
11:38:22
上传
评论
收藏 827KB ZIP 举报
温馨提示
本项目记录一些学习爬虫逆向的案例,仅供学习参考,请勿用于非法用途。 目前已完成:**[网易易盾](#yidun)、[微信小程序反编译逆向(百达星系)](#wechat)、[极验滑块验证码](#jiyan)、[同花顺](#tonghuashun)、[rpc实现解密](#rpc)、[工业和信息化部政务服务平台(加速乐)](#jiasule)、[巨量算数](#juliang)、[Boss直聘](#boss)、[企查查](#qichacha)、[中国五矿](#wukuang)、[qq音乐](#qqmusic)、[产业政策大数据平台](#cyzc)、[企知道](#qizhidao)、[雪球网(acw_sc__v2)](#xueqiu)、[1688](#1688)、[七麦数据](#qimai)、[whggzy](#whggzy)、[企名科技](#qiming)、[全国建筑市场监管公告平台](#mohurd)、[艺恩数据](#endata)、[欧科云链(oklink)](#oklink)、[度衍(uyan)](#uyan)、[凤凰云智影院管理平台](#fenghuang)**
资源推荐
资源详情
资源评论
收起资源包目录
spider_reverse-main.zip (70个子文件)
spider_reverse-main
2023-10
yidun
yidun.py 7KB
YidunAST1.js 6KB
proxy_.js 446B
trace.py 1KB
core.js 135KB
GTrace.py 5KB
wx_betterwood
betterwood.js 2KB
betterwood.py 1KB
2023-8
.DS_Store 6KB
spider_yuekeyun
yuekeyun.js 20KB
spider_boss
boss_zp_token.js 851KB
spider_qichacha
qichacha_.js 3KB
qichacha.py 4KB
spider_uyanip
uyanip_register.py 6KB
spider_tianyancha
tianyancha.py 7KB
2023-7
spider_qq_music
loader.js 12KB
module.js 664KB
qq_music.py 4KB
.DS_Store 8KB
spider_minmetals
minmetals.js 147KB
minmetals.py 3KB
spider_spolicy
spolicy.py 1KB
spolicy.js 132KB
spider_xueqiu
xueqiu.js 2KB
xueqiu.py 4KB
xueqiu.html 22KB
.gitattributes 30B
package.json 193B
package-lock.json 50KB
requirements.txt 120B
test 354B
.gitignore 28B
test.py 173B
README.md 82KB
2023-6_before
demo11_tianaw
tianaw.js 3KB
demo7_qimai
qimai.py 526B
qimai.js 2KB
demo13_aqi
aqi.js 64KB
demo5_1688
h.js 6KB
sign_1688.py 2KB
demo9_qunaer
qunaer.js 2KB
qunaer.py 4KB
demo2_qiming
qiming.js 55KB
qiming.py 727B
demo12_qizhidao
crawler_qizhidao.py 10KB
demo6_cinfo
cinfo.py 307B
ent.js 5KB
demo4_endata
endata.py 554B
endata.js 127KB
demo8_oklink
oklink.py 1KB
oklink.js 776B
demo1_whggzy
whggzy.py 759B
demo10_meituan
meituan.py 4KB
meituan.js 1KB
demo3_mohurd
mohurd.py 529B
mohurd.js 9KB
2023-9
tonghuashun
tonghuashun.py 923B
tonghuashun.js 163KB
geetest_slide
generate_w.js 127KB
geetest.py 21KB
GTrace.py 5KB
rpc
ws_server.py 733B
ws_client.js 422B
trendinsight
juliang.py 5KB
juliang.js 423KB
jsl
jsl.py 2KB
jsl.js 25KB
rs4_fangdichan
d.FxJzG50F.dfe1675.js 157KB
rs4.js 144KB
fangdichan.py 880B
共 70 条
- 1
资源评论
程序员小马软件开发定制
- 粉丝: 4890
- 资源: 2246
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功