Python实现JS逆向解密采集网站数据

编程入门 行业动态 更新时间:2024-10-27 18:31:03

Python实现JS逆向解密采集网站<a href=https://www.elefans.com/category/jswz/34/1771445.html style=数据"/>

Python实现JS逆向解密采集网站数据

嗨喽~大家好呀,这里是魔王呐 ❤ ~!

python更多源码/资料/解答/教程等 点击此处跳转文末名片免费获取


环境使用:

  • Python 3.8

  • Pycharm

  • nodejs


模块使用:

  • import requests --> pip install requests

  • import execjs --> pip install pyexecjs

  • import json


实现爬虫程序:

  1. 抓包分析数据在什么地方

    • 开发者工具抓包 --> F12

      当被禁止调用开发者工具的时候

  2. 选择其他年份的数据 --> XHR

    数据包接口: .php

    • 加密参数:

      请求参数加密: hA4Nse2cT <√>

      响应数据加密:

  3. 分析加密数据生成规则 --> JS代码生成

    传入某些值<明文> 通过JS代码函数<加密方式>生成密文数据

    如何查找加密参数生成位置:

    1. 直接搜索关键字 hA4Nse2cT

    2. 通过启动器里面堆栈 send 打上断点

    先用python代码去请求链接获取响应加密数据

    大胆猜想, 小心实践

    hex_md5 --> MD5加密


代码展示

“”“导入模块”“”

'''
遇到问题没人解答?小编创建了一个Python学习交流QQ群:926207505
寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!
'''
# 导入编译JS代码模块
import execjs
# 导入数据请求模块
import requests
# 导入json模块
import json
# 导入csv模块
import csv
import pandas as pd

“”“发送请求”“”

month_list = ['202301', '202302', '202303', '202304','202305','202306','202308','202309','202310']
for month in month_list:# 模拟浏览器headers = {'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'}# 请求链接url = '.php'

“”“调用JS代码获取加密参数”“”

'''
遇到问题没人解答?小编创建了一个Python学习交流QQ群:926207505
寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!
'''# 读取js文件data_file = open('data.js', 'r', encoding='utf-8').read()# 编译JS代码data_code = execjspile(data_file)# 参数m0fhOhhGL = "GETDAYDATA"oNLhNQ = {"city": "北京","month": month}# 调用js代码函数hA4Nse2cT = data_code.call('post_data', m0fhOhhGL, oNLhNQ)print('加密的请求参数: ', hA4Nse2cT)# 请求参数data = {'hA4Nse2cT': hA4Nse2cT}# 发送请求response = requests.post(url=url, data=data, headers=headers).text

“”“解密响应加密数据”“”

    # 读取文件response_file = open('response.js', 'r', encoding='utf-8').read()# 编译文件response_code = execjspile(response_file)# 调用js函数result = response_code.call('dxvERkeEvHbS', response)print('加密的响应数据: ',response)print('明文响应数据: ',result)

“”“保存数据”“”

'''
遇到问题没人解答?小编创建了一个Python学习交流QQ群:926207505
寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!
'''json_data = json.loads(result)content_list = []for index in json_data['result']['data']['items']:content_list.append(index)df_data = pd.DataFrame(content_list)df_data.to_excel(f'{month}.xlsx', index=False)

模块安装问题:

  • 如果安装python第三方模块:

    1. win + R 输入 cmd 点击确定, 输入安装命令 pip install 模块名 (pip install requests) 回车

    2. 在pycharm中点击Terminal(终端) 输入安装命令

  • 安装失败原因:

    • 失败一: pip 不是内部命令

      解决方法: 设置环境变量

    • 失败二: 出现大量报红 (read time out)

      解决方法: 因为是网络链接超时, 需要切换镜像源

         清华:: ::::pip3 install -i / 模块名
      
    • 失败三: cmd里面显示已经安装过了, 或者安装成功了, 但是在pycharm里面还是无法导入

      解决方法: 可能安装了多个python版本 (anaconda 或者 python 安装一个即可) 卸载一个就好
      或者你pycharm里面python解释器没有设置好


如何配置pycharm里面的python解释器?

  1. 选择file(文件) >>> setting(设置) >>> Project(项目) >>> python interpreter(python解释器)

  2. 点击齿轮, 选择add

  3. 添加python安装路径


pycharm如何安装插件?

  1. 选择file(文件) >>> setting(设置) >>> Plugins(插件)

  2. 点击 Marketplace 输入想要安装的插件名字 比如:翻译插件 输入 translation / 汉化插件 输入 Chinese

  3. 选择相应的插件点击 install(安装) 即可

  4. 安装成功之后 是会弹出 重启pycharm的选项 点击确定, 重启即可生效


尾语

最后感谢你观看我的文章呐~本次航班到这里就结束啦 🛬

希望本篇文章有对你带来帮助 🎉,有学习到一点知识~

躲起来的星星🍥也在努力发光,你也要努力加油(让我们一起努力叭)。

最后,宣传一下呀~👇👇👇更多源码、资料、素材、解答、交流皆点击下方名片获取呀👇👇

更多推荐

Python实现JS逆向解密采集网站数据

本文发布于:2023-11-15 23:59:05,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1610158.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:数据   网站   Python   JS

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!