爬虫逆向 - 分析思路

背景:

网站分析思路

 

笔记1:

案例:
    1.乌海市公共资源: http://www.whggzy.com/home.html  数据加密案例
    2.福建省公共资源交易电子公共服务平台:https://ggzyfw.fujian.gov.cn/index/new  头部信息加密案例

获取爬取数据的流程:
  一 不加密:
    - 在页面中找到需要下载的数据“内蒙古自治区政府采购全流程电子化交易管理办法”
    - 打开“开发者工具”
    - 在“网络”下搜索 “内蒙古自治区政府采购全流程电子化交易管理办法”
    - 找到对应的API
  二 加密:
    - 在页面中找不到需要下载的数据
    - 拉到页面最下方看看是否有分页器
    - 在“网络”下对应的页面返回中查看返回data是否“加密”
    - 确认“启动器(启动程序)”是否混淆(乱码就是混淆)


排错:
- 接口正确性 
    请求对象的发送(查看过程)
    - 源代码下 
    - XHR/提取断点 
    - 添加断点(跳转路径:front/search/category) 
    - 刷新页面 
    - 点调用堆栈下send 跳转对应源码处 
    - 查看相关详情

速记:
    decrypt 关键字搜索时 必须为一个方法,同时,还需要有内容


工具:
    1.将curl转为你想要的语言:https://curlconverter.com/
    2.算法库:crypto-js(js算法库)
    3. FD(fiddler抓包工具)工具


今日重点:
    1.JS定位 -》 数据加密(关键字定位)(无混淆的JS)
    2.对于扣JS 的方法(找到主要的核心加密或者解密的方法或函数)

提示:搜索关键字 出现很多的JS文件 填充该接口的路径 再次搜索 找重复出现的JS 文件

作业:
    1. https://36kr.com/p/2043190896037128 数据加密(提示: 搜索关键字decrypt)
    2. https://webapi.cninfo.com.cn/#/marketData 头部参数加密(提示:搜索关键子mcode)

 

笔记2

1.跟值技巧(通过调用堆栈调试)

取值范围:
16进制: 0-9   A-F
bs64: A-Z a-z  0-9   + / = 

微信公众号平台JS算法改写
- JS调式工具:
    - 发条JS调式工具
- PyExecJs
    - 实现使用python 执行JS代码
- JS算法改写
    - 打断电
    - 代码调试时, 如果发现了相关变量的缺失, 一般给其定义成空字典即可。


示例:
    - 试客联盟
        - url: http://login.shikee.com/
        - serializeArray(): js函数的作用使用来实现序列化(对登录页面的表达式中的值进行序列化, 序列化成一个数组,
            数组元素就是表单中的数据【用户名和密码】)
        - key表示的是公钥, 公钥的生成需要用rsa_n:
            - 基于抓包工具对rsa_n 进行全局搜索

    - 空中网逆向
        - url: https://passport.kongzhong.com/
        - JS混淆:
            - 将js核心的相关代码进行变相的加密, 加密后的数据就是js混淆后的结果

        - js反混淆
            - 反混淆的线上工具(不理想)
            - 浏览器自带的反混淆工具设置(推荐)(chrome)
                - 开发者工具的source -> settings -> sources -> 第一项选中(打上对勾)
                - 进行关键字的全局搜索 -> VMxx(就是反混淆后的代码)
        - 发现了一个data['dc']不知道是什么, 后续处理:
            - 全局搜索, 直接搜索data, 结果太多不便定位
            - 抓包所有请求,一个个查看(考验耐心)
            - 搜索dc
    
    - 长房网
        -url: https://www.fang0355.com/login

 

笔记3

------------hook ------------
    1、hook的时机:
1)在控制台注入的hook,刷新网页就失效;
在网页加载第一个js的位置,第一个断点,然后在控制台手动注入hook
       (有可能注入hook的时机还是会晚一点)
2)利用FD的替换响应 注入hook 这种的时机比较靠前
3)油猴(第三方插件)--不推荐
4)new proxy(使用代理)

2、hook 主要的应用是获取session加密数据hook函数模板:
(function () {
    var info = "";
    Object.defineProperty(document, 'cookie', {
        set: function (val) {
            console.log(val)
            info = val;
            return val;
        },
        get: function () {
            return info;
        }
    });
})();
------------end ------------

 

posted @ 2022-12-28 14:54  萤huo虫  阅读(224)  评论(0编辑  收藏  举报