爬虫 空气质量爬取分析

  • 分析:波波老师的讲解

  • 1.改变页面中的查询条件,然后点击查询按钮,通过抓包工具捕获相关的数据包,最终定位到了想要的空气质量数据对应的数据包

  • 2.该数据包中发现:post请求携带了一个动态变化且加密的请求参数d,并且请求到的数据也是一组密文数据。

  • 3.发现点击了查询按钮后发起了一个ajax请求,该请求帮我们请求到的相关加密的响应数据。

  • 4.通过火狐定位到搜索按钮绑定的click的点击事件(getData)

  • 5.剖析getData函数的实现:

    • type=="HOUR"
    • getAQIData();getWeatherData();发现了这两个函数的调用
  • 6.getAQIData和getWeatherData函数的剖析:

    • 这两个函数的实现几乎一致,只有method变量赋值是不一样:GETDETAIL或者GETCITYWEATHER
    • param的字典:有4个键值对(city,starttime,endtime,type)
    • 调用了getServerData(method,param,匿名函数,0.5)函数
  • 7.剖析getServerData函数的实现:

    • 在谷歌的抓包工具中做全局搜索,定位到了getServerData函数的实现。但是该函数的实现被加密。该加密方式叫做JS混淆。
  • 8.JS反混淆:将js混淆的密文以原文的形式展示。推荐的解密网址:http://www.bm8.com.cn/jsConfusion/

  • 9.getServerData反混淆后的代码进行剖析:

    • getParam(method, object);改方法的参数二object==param,并且该函数的返回值是步骤2中动态变化且加密的请求参数d的value值。
    • decodeData(data);是将加密的响应数据进行解密的。
  • 10.需要通过python调用js的相关代码:

    • PyExecJS:可以让python对js代码进行模拟运行。
    • 环境的安装:
      • pip install PyExecJS
      • 安装nodeJS的环境
  • 总结:

    • 动态变化的请求参数
    • js加密
    • js混淆
posted @ 2020-09-21 09:31  蜗牛般庄  阅读(564)  评论(0编辑  收藏  举报
Title
页脚 HTML 代码