2024前程无忧爬虫

2024前程无忧爬虫

免责声明

该文章为学习使用,严禁用于商业用途和非法用途,否则由此产生的一切后果均与作者无关!如有侵权,请私信联系作者删除

视频链接 前程无忧爬虫

分析

地址:aHR0cHM6Ly93ZS41MWpvYi5jb20vcGMvc2VhcmNoP2tleXdvcmQ9JUU0JUJDJTlBJUU4JUFFJUExJnNlYXJjaFR5cGU9MiZzb3J0VHlwZT0wJm1ldHJv

随便抓一个包,看到有sign acw_sc__v2 这两个疑似加密

然后复制curbash直接发请求测试

把sign注释 有数据 把acw_sc__v2注释 返回一段js

在这里插入图片描述

然后把网站上的cookie清空 刷新网页 hook acw_sc__v2

hook脚本如下:

(function () {
// 严谨模式 检查所有错误
    'use strict';
// document 为要hook的对象 这里是hook的cookie
    var cookieTemp = "";
    Object.defineProperty(document, 'cookie', {
        // hook set方法也就是赋值的方法
        set: function (val) {
            // 这样就可以快速给下面这个代码行下断点
            // 从而快速定位设置cookie的代码
            if (val.indexOf('acw_sc__v2') != -1) {
                debugger;
            }
            console.log('Hook捕获到cookie设置->', val);
            cookieTemp = val;
            return val;
        }, // hook get 方法也就是取值的方法
        get: function () {
            return cookieTemp;
        }
    });
})();

注意:acw_sc__v2一定要写对 写错拿不到数据

成功断住如下图:

在这里插入图片描述

然后跟栈分析 :

arg3就是acw_sc__v2的值

在这里插入图片描述

然后往上看 扣一下代码

arg3一开始是一个空字符串 然后经过for循环生成了值

在这里插入图片描述

从postList开始扣 然后放到node里面跑 代码如下

var posList = [15, 35, 29, 24, 33, 16, 1, 38, 10, 9, 19, 31, 40, 27, 22, 23, 25, 13, 6, 11, 39, 18, 20, 8, 14, 21, 32, 26, 2, 30, 7, 4, 17, 5, 3, 28, 34, 37, 12, 36];
                var mask = _0x1e8e("0x0");
                var outPutList = [];
                var arg2 = "";
                var arg3 = "";
                for (var i = 0; i < arg1[_0x1e8e("0x1")]; i++) {
                    var this_i = arg1[i];
                    for (var j = 0; j < posList[_0x1e8e("0x1")]; j++) {
                        if (posList[j] == i + 1) {
                            outPutList[j] = this_i
                        }
                    }
                }
                arg2 = outPutList[_0x1e8e("0x2")]("");
                for (var i = 0; i < arg2[_0x1e8e("0x1")] && i < mask[_0x1e8e("0x1")]; i += 2) {
                    var GxjQsM = _0x1e8e("0x3")[_0x1e8e("0x4")]("|")
                      , QoWazb = 0;
                    while (!![]) {
                        switch (GxjQsM[QoWazb++]) {
                        case "0":
                            if (xorChar[_0x1e8e("0x1")] == 1) {
                                xorChar = "0" + xorChar
                            }
                            continue;
                        case "1":
                            var strChar = parseInt(arg2[_0x1e8e("0x5")](i, i + 2), 16);
                            continue;
                        case "2":
                            arg3 += xorChar;
                            continue;
                        case "3":
                            var xorChar = (strChar ^ maskChar)[_0x1e8e("0x6")](16);
                            continue;
                        case "4":
                            var maskChar = parseInt(mask[_0x1e8e("0x5")](i, i + 2), 16);
                            continue
                        }
                        break
                    }
                }

运行 报错

 var mask = _0x1e8e("0x0");
ReferenceError: _0x1e8e is not defined

这时候我们去浏览器看是什么

发现就是一个字符串 3000176000856006061501533003690027800375

在这里插入图片描述

继续跑 arg1报错 给一个arg1值 "“E1744785B6196E58D8E33D6A0410AB0F6A6284B0” "

ReferenceError: arg1 is not defined

报错

ReferenceError: _0x1e8e is not defined

看到这里可以发现都是一些类似的变量 _0x1e8e

去浏览器里面找 _0x1e8e(“0x1”)就是length

在这里插入图片描述

同理 其他的也是一样的 就不带着找了 把这些替换掉 就可以出值了

替换后 console.log(arg3)跟下面的值一样就没有问题了

在这里插入图片描述

然后看发包情况

一共发了两次包

在这里插入图片描述

第一次返回js 第二次携带acw_sc__v2 就可以拿到数据

然后第一次返回的用正则表达式来提取arg1 通过arg1来生成arg3 arg3就是acw_sc__v2的值

以下步骤就很简单了 就不带着写了

源码获取

未经允许不得转载

放一张成功的图片

在这里插入图片描述

公众号 :庆哥爬虫 关注公众号发送前程无忧爬虫自动获取

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值