翼度科技»论坛 编程开发 python 查看内容

为了防止这个网站被各位爬崩,我连夜用Python下载了上万张壁纸(附网站JS逆

4

主题

4

帖子

12

积分

新手上路

Rank: 1

积分
12
每当一个网站崩溃,在座的各位都有一定的责任。

当一个爬虫教程不火的时候还好,火起来了,就到了考验网站服务器的时候了,上一次茶杯狐就是这样,还好人家顽强…

 
好了话不多说,直接开始。
首先就是必备的软件和模块
环境使用
  1. Python 3.8
  2. Pycharm
复制代码
 
模块使用
  1. requests --> pip install requests
  2. execjs --> pip install PyExecJS
  3. json
复制代码
 
前两个是第三方模块,要手动安装一下,键盘按住win + R 输入cmd 输入安装命令 pip install 模块名 (如果你觉得安装速度比较慢, 你可以切换国内镜像源)
代码部分
获取加密数据
  1. # 请求头
  2. headers = {
  3.     'Referer':'https://bz.zzzmh.cn/',
  4.     'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36'
  5. }
  6. # 请求链接
  7. url = 'https://api.zzzmh.cn/bz/v3/getData'
  8. for page in range(1, 11):
  9.     # 请求参数
  10.     data = {
  11.         "size":24,
  12.         "current":page,
  13.         "sort":0,
  14.         "category":0,
  15.         "resolution":0,
  16.         "color":0,
  17.         "categoryId":0,"ratio":0
  18.     }
  19.     # 发送请求
  20.     response = requests.post(url=url, json=data, headers=headers)
  21.     # 获取响应json数据
  22.     json_data = response.json()
  23.     # 解析数据, 提取加密数据内容
  24.     # 我还录制了详细的视频讲解,跟源码一起打包好了
  25.     # 都放在这个抠裙了 872937351
  26.     result = json_data['result']
复制代码
 
通过python代码调用js代码获取明文数据
  1. # 读取js代码文件
  2. f = open('壁纸.js', 'r', encoding='utf-8').read()
  3. # 编译js文件内容
  4. js_code = execjs.compile(f)
  5. # 调用js代码函数 --> 函数名传入字符串
  6. data = js_code.call('_0xc7dd1', result)
  7. # json字符串数据转成json字典数据
  8. info = json.loads(data)
  9. # 解析数据, 提取图片ID
  10. for index in info['list']:
  11.     # 提取图片ID
  12.     img_id = index['i']
  13.     # 图片链接: https://api.zzzmh.cn/bz/v3/getUrl/61ac5e440dac4d97a6624e05044c407421
  14.     t = index['t']
  15.     if t == 2:
  16.         img_url = f'https://api.zzzmh.cn/bz/v3/getUrl/{img_id}21'
  17.     elif t == 1:
  18.         img_url = f'https://api.zzzmh.cn/bz/v3/getUrl/{img_id}11'
  19.     # 获取图片数据内容
  20.     img_content = requests.get(url=img_url, headers=headers).content
  21.     with open(f'img\\{img_id}.jpg', mode='wb') as img:
  22.         img.write(img_content)
  23.     print(img_url)
复制代码
 
JS逆向部分
[code]var window = global; function _0x4e58da(_0x3d1ba4) {    let _0x481fd7, _0x1af3a1, _0x7ac69c = '';    for (var _0x1074ee = 0x0; _0x1074ee < _0x3d1ba4['length'];)        _0x481fd7 = _0x3d1ba4[_0x1074ee],            _0x1af3a1 = 0x0,            _0x481fd7 >>> 0x7 === 0x0 ? (_0x7ac69c += String['fromCharCode'](_0x3d1ba4[_0x1074ee]),                _0x1074ee += 0x1) : 0xfc === (0xfc & _0x481fd7) ? (_0x1af3a1 = (0x3 & _0x3d1ba4[_0x1074ee])

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x

举报 回复 使用道具