1.解决网站的反爬机制,无限debugger以及检测到非法调试(这里以msedge浏览器为例)

第一步

点击右上角三个点——更多工具——开发人员工具

第二步

点击开发者工具右上角三个点,然后点击左边的(进入独立窗口)也就是下图的第2步

点击后我们发现我们要调试的网站和开发工具变成了2个独立的窗口页面,如下图:

第三步

在我们的debugger左边单击右键,然后选择永不在此处暂停,如下图:

第四步

回到我们的网站窗口,点击左上角的刷新按钮进行刷新,如图:

此时我们就可以进入调试阶段了

到此该网站的反爬机制,无限debugger以及检测到非法调试解决

2.对该网站进行抓包分析

当我们进行抓包分析时,发现该网址的数据是经过加密的,具体是什么加密,我们需要一步步来,具体分析。

首先我们要做的就是拿到这一串加密数据。该数据是通过发送post请求得到的.

那么这时我们就需要找到他的在发送请求是所携带的参数,也就是Form Data(负载),该网址的参数为 hq4D4VYuB,一般来说参数名是不变的,参数值是变化的,但是这个网址是一个动态的js,是在不停变化的,大约10分钟,Form Data(负载)里面的参数值和参数名都会变化.

那么难度可想而知.

废话少说,我们进行参数的搜索,看他怎么加密的,这里可以通过全局搜索进行查找,也可以通过调用栈分析,进入如下图第三个调用栈

进入后 ctrl + f 进行搜索hq4D4VYuB,找到它的位置打上断点进行调试,

3.通过断点调试进入函数,分析函数的加密方法

注意在这里我们不能点击刷新调试,点击它我们是不会再断点处停止的.

正确的调试方法为选择其他城市,进行断点的调试

很好我们已经成功进入到了调试阶段

打上断点调试发现hq4D4VYuB由pbPc80T得到,而pbPc80T又是通过函数pbPc80T = pT7KIOse9j0ACVM(m0VmdwcJ2, oEmiM1HfK4)得到,我们通过测试台打印发现

m0VmdwcJ2为固定参数:GETDATA 而oEmiM1HfK4为我们所选的城市构成的一个键值对,即pbPc80T = pT7KIOse9j0ACVM('GETDATA', {city: '北京'}),所以pT7KIOse9j0ACVM是我们需要还原的加密函数.

进入pT7KIOse9j0ACVM加密函数,如下图所示,其中的hex_md5和BASE64均为正常的MD5和BASE64,而AES加密,进行了修改,如下图,传入AES的key与iv进行了md5运算,并截取的不同的部分。

1.这里所需appId,及AES所需的key和iv都是动态的,这里放到加解密所需的参数获取里一起解决。

2.上图中最后一步是对param的AES加密,并不一定,还可能是DES,也可能直接经过base64加密就可以了,既没有AES也没有DES,如下图是我抓的两次对比,可以发现不一样,这里的解决方式也放到加解密所需的参数获取里一起解决

第一种情况:BASE与AES加密

第二种情况:BASE与DES加密

第三种情况:只有BASE加密

这里我们先告一段落

4.寻找数据的加密函数

数据的加密位置:

通过调试我们发现dpWrq为一串加密码文。

在控制台打印dZ1ISMEqP328PD2Ytc(dpWrq),我们发现他变成了明文,也就是说这里就是数据的加密解析。

进入dZ1ISMEqP328PD2Ytc解密函数:
解密函数简单:分别经过AES解密—DES解密—base解密
同之前请求参数加密一样AES,DES的key与iv经过MD5处理了,且是动态变化的,在加解密所需的参数分析

5.加解密所需的参数获取(思路分析)

因为参数是变化的,我们也不知道要去哪里获取,这时我们就要通过大量的分析与寻找试错,功夫不负有心人,

经过不断努力,正确思路如下:

去我们获取数据也网址找到他的Referer

故接下来分析中国空气质量在线监测分析平台|实时监控|PM2.5在线监测这个请求包,同样发现返回的页面信息并没有直接的我们需要的key啊,iv啊,appID啊,继续分析script标签引入的js,如下框的src=/js/encrypt_的链接发现可疑。(注意,这个src后面的v=的数字是变化的,故需从此处页面源代码正则匹配获得)

同理我们在去找到1644988961对应的包看看里面的内容:分析发现这是一个eval加密的内容

在浏览器执行eval后,如下图(代码太长,仅仅截取的部分),发现还有eval,但是eval(dswejwehxt(…))的js代码,是不是眼熟,dswejwehxt是之前分析的一个Base64解密函数.

故在本地将上述代码Base64解密,并eval后的部分js代码如下

终于找到我们所需的KEY,iv,appid了,这些参数都在里面。

故此,所需的均分析完毕,这里再梳理一遍流程:

6.思路流程梳理

1.通过这个中国空气质量在线监测分析平台|实时监控|PM2.5在线监测链接,正则匹配得到js/encrypt_的动态url。

2.请求上面得到的动态url,获得响应数据,响应数据类似于这样eval(dswejwehxt(…))的字符串。

3.解密eval(dswejwehxt(…))字符串,得到明文js代码,并从中解析得到加解密所需的参数,包括aes的key,iv;des的key,iv;appid。

4.加密请求数据,并封装成需要的post请求格式。

5.带着第4步的加密数据,对返回所需接口url:https://www.aqistudy.cn/apinew/aqistudyapi.php发送请求。

6.得到返回的密文数据

7.解密返回的密文数据得到明文。

如有侵权,请联系删除,谢谢!!

全国空气质量网址解析相关推荐

  1. ECharts实现全国空气质量查询

    ECharts实现全国空气质量查询 ECharts实现全国空气质量查询   项目简介   效果展示   主要技术   主要流程   环境配置 Python Flask框架建立项目 Python 爬虫爬 ...

  2. 全国空气质量查询程序说明和下载

    全国空气质量查询程序说明和下载 ECharts实现全国空气质量查询 Python Flask框架建立项目 Python 爬虫爬取空气质量数据 Echarts实现空气质量查询网页 全国空气质量查询程序说 ...

  3. 基于 Python 的全国空气质量监测与可视化分析平台

    温馨提示:文末有 CSDN 平台官方提供的学长 Wechat / QQ 名片 :) 1. 项目背景 空气质量优劣程度与一个城市的综合竞争力密切相关,它直接影响到投资环境和居民健康,因此越来越受到政府和 ...

  4. python爬取空气质量_python爬取全国空气质量信息

    主要模块 requests模块.使用requests模块来获取http响应 gevent模块.使用gevent开启多个协程,加快爬取速度 re模块或beautifulsoup模块.正则表达式解析与be ...

  5. pyechart1.19 全国空气质量展示

    上代码: import pyecharts.options as opts from pyecharts.charts import BMapdata = [["海门", 9],[ ...

  6. 爬取全国空气质量数据

    思路: 1.空气质量在线监测平台 https://www.aqistudy.cn/: 2.分析网站,找到历史数据查询入口:https://www.aqistudy.cn/historydata/,首页 ...

  7. 全国空气质量排行,云贵川和西藏新疆等地空气质量更好

    哈喽,大家好,春节刚刚过去,不知道大家是不是都开始进入工作状态了呢? 春节期间,允许燃放烟花爆竹的地区的朋友们不知道都去欣赏烟花表演没有?其他地区的朋友们相比烟花表演可能更关心燃放烟花爆竹造成的环境污 ...

  8. 下载和java io流处理全国空气质量历史数据

    下载源数据http://beijingair.sinaapp.com/ 源数据格式: 需要格式: javaIO流处理代码: import java.io.BufferedReader; import ...

  9. 【数据分享】2014-2023年全国监测站点的逐日空气质量数据(15个指标\无需转发)

    空气质量的好坏反映了空气的污染程度,在各项涉及城市环境的研究中,空气质量都是一个十分重要的指标.空气质量是依据空气中污染物浓度的高低来判断的. 我们发现学者王晓磊在自己的主页里面分享了2014年5月以 ...

最新文章

  1. ios Standard Framework和Umbrella Framework
  2. 大型网站的 HTTPS 实践(1):HTTPS 协议和原理
  3. Oracle优化04-Optimizer优化器
  4. 算法—1,简单说说最常见的冒泡排序(Bubble Sort)
  5. [Bzoj4260]Codechef REBXOR(trie树)
  6. 利用扩展欧几里得算法编程求逆元
  7. java求最后一位不为0的数字_【Java】 剑指offer(62) 圆圈中最后剩下的数字
  8. Catalyst 65xx系列交换机配置(Native IOS)
  9. 矩阵分析 (七) 矩阵特征值的估计
  10. 三笔输入法 开发过程记录
  11. python爬取千图网高清图
  12. dialog第三方框架,material-dialogs的使用
  13. 【Nodejs】使用http.request批量下载MP3,发现网络文件大于1000K时下载文件为0K
  14. html display none取消,将displaynone取消
  15. 树莓派自动饮水机编程示例
  16. JS-关于原型与原型链这件事
  17. 云计算实验4 面向行业背景的大数据分析与处理综合实验
  18. CoralGloba珊瑚跨境的“全银行通道结算”,是创举还是噱头?
  19. 解决新安装的 Arch Linux 在 GNOME 中搜狗输入法不显示候选词和输入延迟的问题
  20. C++实现分苹果问题

热门文章

  1. C#之四十八 俄罗斯方块设计
  2. Altium Designer官方库下载地址(自己知道芯片公司的话这里很方便)
  3. 免费超大量邮件发送服务,Kewail提供SMTP和API支持
  4. Lecture 11: Detection and Segmentation
  5. DSP UART配置和使用
  6. Docker有什么用?
  7. backtrader股票量化回测超省力必须入门系列(1):回测基本思想与“策略迭代表”
  8. 新手GitHub使用指南
  9. 5讲项目实战js第二区域轮播器及选项卡
  10. 【论文总结】《Neural Reading Comprehension and Beyond(2018,第一部分)》(阅读理解任务综述)