zoukankan      html  css  js  c++  java
  • 爬虫 空气质量爬取分析

    • 分析:波波老师的讲解

    • 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混淆
  • 相关阅读:
    Java 编程基础
    LING 实战
    C# 3.0\3.5 新特性
    EF Code First 入门
    C# 4.0 新特性
    JavaScript学习(二)
    JavaScript学习(一)
    csdn的blog后台程序的导航菜单的实现
    HashTable的遍历
    开通啦
  • 原文地址:https://www.cnblogs.com/zhuangdd/p/13703791.html
Copyright © 2011-2022 走看看