首页 > 编程语言 >简单的用Python实现一下JS逆向解密,采集空气质量数据

简单的用Python实现一下JS逆向解密,采集空气质量数据

时间:2023-11-18 15:45:56浏览次数:43  
标签:请求 Python data list 解密 JS month 数据 response

最近天气降温厉害,咱们用Python来分析一下空气质量如何~

话不多说,我们直接开始上手。

环境以及模块

环境使用

  • Python 3.8
  • Pycharm
  • nodejs

模块使用

  • import requests
  • import execjs
  • import json

requestsexecjs 都是第三方模块,需要手动安装,直接pip install 加上模块名字即可。

思路流程

一. 数据来源分析

  1. 明确需求: 明确采集的网站以及数据

  2. 抓包分析: 通过浏览器自带的开发者工具分析数据

    • 打开开发者工具: F12
    • 刷新网页
    • 通过关键字搜索查询对应数据包位置

二. 代码实现步骤

  1. 发送请求 -> 模拟浏览器对于url地址发送请求
  2. 获取数据 -> 获取服务器返回响应数据
  3. 解析数据 -> 提取具体数据内容
  4. 保存数据 -> 保存表格文件中

代码展示

定义月份列表,用于循环请求数据。

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'
}
# 请求链接
# 完整的源码和视频讲解我都打包好 
# 在这个抠裙自取 708525271
url = 'https://www.aqistudy.cn/historydata/api/historyapi.php'

 

调用JS代码获取加密参数

# 读取js文件
data_file = open('data.js', 'r', encoding='utf-8').read()
# 编译JS代码
data_code = execjs.compile(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 = execjs.compile(response_file)
# 调用js函数
result = response_code.call('dxvERkeEvHbS', response)
print('加密的响应数据: ',response)
print('明文响应数据: ',result)

 

保存数据
将解密后的数据保存到Excel文件中

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,data,list,解密,JS,month,数据,response
From: https://www.cnblogs.com/hahaa/p/17840607.html

相关文章

  • Python全栈开发从入门到入土【新版】
    【Python初级】【一】计算机基础【补充】计算机五大组成部分【二】编程语言和Python语言介绍【三】Python解释器和Pycharm的安装【补充】Python相关补充【补充】Pycharm相关补充【四】Python语法入门之常量和变量【五】Python基础之垃圾回收机制【六】Python基础之基本......
  • 【3.1】Python相关补充
    【一】PIP换源【1】问题描述在使用Python时,我们经常需要用到pip安装第三方包。但是,在某些情况下,由于网络速度慢或者其他各种原因,pipinstall会非常慢,甚至可能无法完成。为了解决这个问题,我们提供以下几种方法。【2】永久更换pip源一般来说,我们使用的是默认的pip源,这个源......
  • 【8.0】Python基础之基本运算符
    【一】参考网站参考网站(菜鸟教程):https://www.runoob.com/python/python-operators.html【二】算数运算符python支持的算数运算符与数学上计算的符号使用是一致的我们以x=9,y=2为例来依次介绍它们【1】加法运算符+x=9y=2result=x+yprint(result)#输出:1......
  • 【7.0】Python基础之程序与用户交互
    【一】什么是与用户交互交互的本质就是输入、输出用户交互就是人往计算机中input/输入数据,计算机print/输出结果【二】为什么要与用户交互为了让计算机能够像人一样与用户沟通交流过去我们去银行取钱,用户需要把帐号密码告诉柜员而现在,柜员被ATM机取代ATM机就是一台......
  • 【11.0】Python基础之可变和不可变数据类型
    【一】堆【0】引入https://www.hello-algo.com/chapter_heap/堆就像是山川的峰峦,它们层叠起伏、形态各异。每一座山峰都有其高低之分,而最高的山峰总是最先映入眼帘。【1】堆的介绍「堆heap」是一种满足特定条件的完全二叉树,主要可分为图8-1所示的两种类型。......
  • 【10.0】Python基础之数据类型的内置方法
    【一】数据类型内置方法介绍数据类型是用来记录事物状态的,而事物的状态是不断变化的(如:一个人年龄的增长(操作int类型)单个人名的修改(操作str类型),学生列表中增加学生(操作list类型)等),这意味着我们在开发程序时需要频繁对数据进行操作为了提升我们的开发效率python针对这些常用......
  • 【9.0】Python基础之流程控制语句
    【一】流程控制语句介绍程序是由语句构成,而流程控制语句是用来控制程序中每条语句执行顺序的语句。可以通过控制语句实现更丰富的逻辑以及更强大的功能。几乎所有编程语言都有流程控制语句,功能也都基本相似。其流程控制方式有顺序结构分支结构循环结构这里最简单......
  • Python复制表格文件的指定行:不同的行复制不同次数
      本文介绍基于Python语言,读取Excel表格文件数据,并将其中符合我们特定要求的那一行加以复制指定的次数,而不符合要求的那一行则不复制;并将所得结果保存为新的Excel表格文件的方法。  这里需要说明,在我们之前的文章Python自动复制表格文件中指定的数据行的方法中,也介绍过实现类......
  • ThreejsWeb3D开发之可视化大数据地图
    详情课程链接:​​Threejs之数据可视化大屏地图​​简介:从0到1采用Vite去搭建Threejs场景,数据可视化地图效果基本满足,详细解说着色器入门到编写,学习Threejs从基础到进阶操作,带你将Three.js技术落地,掌握其实际应用一、初始化Threejs场景二、超真实度假天空效果二(1)Sky天空效果......
  • JSX、TSX 整体理解
    可以少去理解一些不必要的概念,而多去思考为什么会有这样的东西,它解决了什么问题,或者它的运行机制是什么?JSJavaScript是互联网上最流行的脚本语言,这门语言可用于HTML和web,更可广泛用于服务器、PC、笔记本电脑、平板电脑和智能手机等设备。https://www.runoob.com/js/js-i......