猿人学内部练习平台第21、22、24、29、34题

第21题 一个套了轻ob的webpack

观察接口请求参数可以发现,需要我们逆向参数 s,经过查看调用堆栈,很容易找到参数位置,如下:

可以看到,这是一个 webpack 文件,此时有两种处理方式,第一种是直接复制该文件到本地,将参数暴露到全局,根据报错修补环境;第二种是先将加载器函数复制出来,然后根据入口模块一个个修补模块。
先看第一种方式:
将此 webpack.js 复制到本地,然后在关键参数部分添加如下代码,将所需参数暴露至全局:

然后运行,报如下错误:

将报错位置的 window 改为 global,继续运行,系统报如下错误,并弹出警告窗口:

先将 $['ajax'] 那部分代码删掉,然后在上文 p = global 那里打上断点,一步步调式,发现弹出警告窗口的代码是这一行:

也就是生成我们所需逆向的参数 s 的生成函数里,进入继续单步调试,最终发现是如下代码导致的弹窗:

删除该行 eval,继续运行,发现系统不停的输出内容,且弹窗无限循环出现,推测是设置了 setInterval,在文件首行将该函数置空 setInterval = function () {},再次运行,程序终于没有报错了,接着就是在程序最后添加打印:

console.log(global.t)
console.log(global.s)

运行,发现没有任何输出,这时我们可以打印一个常量看看,比如 console.log(123),发现还是没有输出,断点调试也经过了此行代码,说明系统对 console.log 做了手脚,此时可以在程序首行自定义一个输出变量,如 h_log = console.log,通过该变量打印:

h_log(global.t)
h_log(global.s)

再次运行,可以看到,成功输出了对应参数:

这时,就可以在 python 中调用了:

import subprocess

result = subprocess.check_output(['node', '1.js']).decode().split('\n')
print(result[0], result[1])

第二种方式,通过入口模块一个个修补模块
首先找到 webpack 中的加载器部分,如下:

!function(_0x33909e) {
    var _0x56b1f7 = function() {
        var _0x2f2759 = !![];
        return function(_0x68fc69, _0x575f66) {
            var _0x1686f2 = _0x2f2759 ? function() {
                if (_0x575f66) {
                    var _0x1aef1e = _0x575f66['apply'](_0x68fc69, arguments);
                    return _0x575f66 = null,
                    _0x1aef1e;
                }
            }
            : function() {}
            ;
            return _0x2f2759 = ![],
            _0x1686f2;
        }
        ;
    }();
    function _0xe63c45(_0xd5a17c) {
        var _0x291e45 = _0x56b1f7(this, function() {
            var _0x45b5a7 = function() {
                var _0x476af4;
                try {
                    _0x476af4 = Function('return\x20(function()\x20' + '{}.constructor(\x22return\x20this\x22)(\x20)' + ');')();
                } catch (_0x12f241) {
                    _0x476af4 = window;
                }
                return _0x476af4;
            }
              , _0x2a46ca = _0x45b5a7()
              , _0x43925d = _0x2a46ca['console'] = _0x2a46ca['console'] || {}
              , _0x2d2eeb = ['log', 'warn', 'info', 'error', 'exception', 'table', 'trace'];
            for (var _0x4e73e5 = -0x1 * -0x1840 + -0x2609 + 0xdc9; _0x4e73e5 < _0x2d2eeb['length']; _0x4e73e5++) {
                var _0x56bc6c = _0x56b1f7['constructor']['prototype']['bind'](_0x56b1f7)
                  , _0x16db9f = _0x2d2eeb[_0x4e73e5]
                  , _0xa38bf = _0x43925d[_0x16db9f] || _0x56bc6c;
                _0x56bc6c['__proto__'] = _0x56b1f7['bind'](_0x56b1f7),
                _0x56bc6c['toString'] = _0xa38bf['toString']['bind'](_0xa38bf),
                _0x43925d[_0x16db9f] = _0x56bc6c;
            }
        });
        _0x291e45();
        if (_0x2e44f1[_0xd5a17c])
            return _0x2e44f1[_0xd5a17c]['exports'];
        var _0xfaa4fe = _0x2e44f1[_0xd5a17c] = {
            'i': _0xd5a17c,
            'l': !(0x1822 + 0x55d * 0x3 + -0xb * 0x3a8),
            'exports': {}
        };
        return _0x33909e[_0xd5a17c]['call'](_0xfaa4fe['exports'], _0xfaa4fe, _0xfaa4fe['exports'], _0xe63c45),
        _0xfaa4fe['l'] = !(-0x854 + 0x493 * 0x1 + 0x1 * 0x3c1),
        _0xfaa4fe['exports'];
    }
    var _0x2e44f1 = {};
    _0xe63c45['m'] = _0x33909e,
    _0xe63c45['c'] = _0x2e44f1,
    _0xe63c45['i'] = function(_0x4bed3d) {
        return _0x4bed3d;
    }
    ,
    _0xe63c45['d'] = function(_0x2973c5, _0x1b81bd, _0xea4905) {
        var _0x5d151a = {};
        _0x5d151a['configurable'] = !(-0x1969 + 0x10f3 + 0x877),
        _0x5d151a['enumerable'] = !(0xb * 0x7a + -0x6fd * -0x3 + 0x1 * -0x1a35),
        _0x5d151a['get'] = _0xea4905,
        _0xe63c45['o'](_0x2973c5, _0x1b81bd) || Object['defineProperty'](_0x2973c5, _0x1b81bd, _0x5d151a);
    }
    ,
    _0xe63c45['n'] = function(_0x4d1715) {
        var _0x4b2239 = _0x4d1715 && _0x4d1715['__esModule'] ? function() {
            return _0x4d1715['default'];
        }
        : function() {
            return _0x4d1715;
        }
        ;
        return _0xe63c45['d'](_0x4b2239, 'a', _0x4b2239),
        _0x4b2239;
    }
    ,
    _0xe63c45['o'] = function(_0x111524, _0xb34723) {
        return Object['prototype']['hasOwnProperty']['call'](_0x111524, _0xb34723);
    }
    ,
    _0xe63c45['p'] = '',
    _0xe63c45(_0xe63c45['s'] = -0x1 * -0x2a5 + 0x24d8 + -0xb * 0x38d);
}()

主要是函数 _0xe63c45,可以在如下位置添加打印:

直接运行,报如下错误,缺少模块 110,将该模块复制过去:

再次运行,如下,缺少 512 模块,再将该模块复制过去:

再次运行,缺哪个模块,就复制哪个模块过去,最终如下:

接着要处理的和第一种方式一样,setInterval 和 h_log 的处理,以及相关 eval 的删除,最终输出如下:

也成功的打印了参数。

第22题 牛奶我只喝特仑苏

该题主要考察的是 tls 指纹的校验,首先写一个基本的请求程序:

import requests

headers = {
    'cookie': 'sessionid=改为自己的sessionid; Hm_lvt_337e99a01a907a08d00bed4a1a52e35d=1714980899,1717168110,1717210903; no-alert=true; Hm_lpvt_337e99a01a907a08d00bed4a1a52e35d=1717225550; __yr_token__=b301cDGEbIHYnURYVQVdFfwRCKAgDQCw8PAwEfDwOMzwFLSQLT1d6ZGF7BgklZVkeUAYgNV5QMwAmZDVCP1EhRWJzaB8bG0NfThwbe19hVmIQPRF7XDI4SANuWAZYF3ZrXAZPABUMG3kJWQNBYRY=',
    'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36 Edg/120.0.0.0',
}

data = {
  'page': '2'
}

response = requests.post('https://www.python-spider.com/api/challenge22', headers=headers, data=data)
print(response.status_code, response.text)

运行后返回 403,因为 requests 库的 tls 指纹与浏览器的指纹特征是不同的,目前已经有一些 python 库支持自处理 tls,如 curl_cffi,https://github.com/yifeikong/curl_cffi,通过 pip 安装 pip install curl_cffi,以及 tls-client,(pip install tls-client),以 curl_cffi 为例,代码改为如下:

from curl_cffi import requests

headers = {
    'cookie': 'sessionid=改为自己的sessionid; Hm_lvt_337e99a01a907a08d00bed4a1a52e35d=1714980899,1717168110,1717210903; no-alert=true; Hm_lpvt_337e99a01a907a08d00bed4a1a52e35d=1717225550; __yr_token__=b301cDGEbIHYnURYVQVdFfwRCKAgDQCw8PAwEfDwOMzwFLSQLT1d6ZGF7BgklZVkeUAYgNV5QMwAmZDVCP1EhRWJzaB8bG0NfThwbe19hVmIQPRF7XDI4SANuWAZYF3ZrXAZPABUMG3kJWQNBYRY=',
    'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36 Edg/120.0.0.0',
}

data = {
  'page': '2'
}

response = requests.post('https://www.python-spider.com/api/challenge22', headers=headers, data=data, impersonate='chrome120')
print(response.status_code, response.text)

再次运行,可以成功获取对应数据。

第24题 万籁俱寂

抓包发现,没有任何加密参数,直接requests请求,返回 403,查看抓包信息可以发现,是 http2.0 请求,且该网站会检测请求是否为 http2:

requests 库是不支持 http2 的,此时可以使用 httpx 或者 22 题提到的 curl_cffi 请求,就可以获取到数据了。

第29题 浓缩特仑苏

校验 tls 指纹,解法同 22 题

第34题 js加课例题1


首先清除除 sessionid 外的cookie,刷新页面,查看接口:


可以看到,页面首先请求了一次 https://www.python-spider.com/challenge/34,返回了一段包裹 js 代码的html,然后加载了 h1.js 和 h2.js 两个文件,接着再次请求了 https://www.python-spider.com/challenge/34,第二次请求正常响应了数据,第一次请求返回的内容大致如下:

可以看到,声明了两个变量 rind 和 rnns,然后调用了 sEnc 方法,此时查看 cookie,可以看到新生成了两个cookie,yuanrenxue34 和 iloveu,就是我们要模拟生成的cookie。
yuanrenxue34 在第一次请求页面时通过 Set-Cookie 返回,iloveu 则是通过js加密得到的。
接下来我们再次清除 cookie,在如下所示位置打上断点,重新刷新加载页面:

点击执行按钮,直至运行至 34 页面,单步调试至 sEnc 方法处:

进入该方法,可以看到,位于 h2.js 中:

经过调试可知,该方法就是生成 iloveu 参数的方法。
将 h1.js 和 h2.js 的内容复制到本地同一个文件中,并删除相关环境检测代码,合并相同变量,经过一步步调试修改,最终代码如下:

var __Oxb76f0 = ["", "\x6C\x65\x6E\x67\x74\x68", "\x63\x6F\x6E\x63\x61\x74", "\x63\x68\x61\x72\x43\x6F\x64\x65\x41\x74", "\x77\x65\x62\x64\x72\x69\x76\x65\x72", "\x75\x73\x65\x72\x41\x67\x65\x6E\x74", "\x63\x61\x6E\x76\x61\x73", "\x63\x72\x65\x61\x74\x65\x45\x6C\x65\x6D\x65\x6E\x74", "\x67\x65\x74\x43\x6F\x6E\x74\x65\x78\x74", "\x77\x65\x62\x67\x6C", "\x57\x45\x42\x47\x4C\x5F\x64\x65\x62\x75\x67\x5F\x72\x65\x6E\x64\x65\x72\x65\x72\x5F\x69\x6E\x66\x6F", "\x67\x65\x74\x45\x78\x74\x65\x6E\x73\x69\x6F\x6E", "\x67\x65\x74\x50\x61\x72\x61\x6D\x65\x74\x65\x72", "\x42\x72\x69\x61\x6E\x20\x50\x61\x75\x6C", "\x43\x68\x72\x6F\x6D\x65", "\x69\x6E\x64\x65\x78\x4F\x66", "\x41\x6E\x64\x72\x6F\x69\x64", "\x70\x6C\x75\x67\x69\x6E\x73", "\x6C\x61\x6E\x67\x75\x61\x67\x65", "\x6C\x61\x6E\x67\x75\x61\x67\x65\x73", "\x75\x73\x65\x72\x4C\x61\x6E\x67\x75\x61\x67\x65", "\x46\x69\x72\x65\x66\x6F\x78", "\x57\x65\x62\x4B\x69\x74", "\x6F\x6E\x6C\x6F\x61\x64", "\x69\x6D\x61\x67\x65\x73", "\x77\x69\x64\x74\x68", "\x77\x72\x69\x74\x65", "\x53\x74\x6F\x70", "\x65\x78\x65\x63\x43\x6F\x6D\x6D\x61\x6E\x64", "\x73\x74\x6F\x70", "\x66\x72\x6F\x6D\x43\x68\x61\x72\x43\x6F\x64\x65", "\x30\x31\x32\x33\x34\x35\x36\x37\x38\x39\x41\x42\x43\x44\x45\x46", "\x30\x31\x32\x33\x34\x35\x36\x37\x38\x39\x61\x62\x63\x64\x65\x66", "\x63\x68\x61\x72\x41\x74", "\x73\x75\x62\x73\x74\x72\x69\x6E\x67", "\x41\x42\x43\x44\x45\x46\x47\x48\x49\x4A\x4B\x4C\x4D\x4E\x4F\x50\x51\x52\x53\x54\x55\x56\x57\x58\x59\x5A\x61\x62\x63\x64\x65\x66\x67\x68\x69\x6A\x6B\x6C\x6D\x6E\x6F\x70\x71\x72\x73\x74\x75\x76\x77\x78\x79\x7A\x30\x31\x32\x33\x34\x35\x36\x37\x38\x39\x2B\x2F", "\x75\x6E\x64\x65\x66\x69\x6E\x65\x64", "\x6C\x6F\x67", "\u5220\u9664", "\u7248\u672C\u53F7\uFF0C\x6A\x73\u4F1A\u5B9A", "\u671F\u5F39\u7A97\uFF0C", "\u8FD8\u8BF7\u652F\u6301\u6211\u4EEC\u7684\u5DE5\u4F5C", "\x6A\x73\x6A\x69\x61", "\x6D\x69\x2E\x63\x6F\x6D"];
var __Oxbb794 = ["", "\x6C\x65\x6E\x67\x74\x68", "\x63\x6F\x6E\x63\x61\x74", "\x3B\x20", "\x73\x70\x6C\x69\x74", "\x63\x6F\x6F\x6B\x69\x65", "\x3D", "yuanrenxue34", "iloveu=", "\x64\x6F\x6D\x61\x69\x6E", "\x2E", "\x72\x65\x70\x6C\x61\x63\x65", "\x67\x65\x74\x54\x69\x6D\x65", "\x73\x65\x74\x54\x69\x6D\x65", "\x3B\x20\x65\x78\x70\x69\x72\x65\x73\x3D", "\x74\x6F\x47\x4D\x54\x53\x74\x72\x69\x6E\x67", "\x3B\x20\x70\x61\x74\x68\x3D\x2F", "\x3B\x20\x64\x6F\x6D\x61\x69\x6E\x3D", "\x63\x68\x61\x72\x43\x6F\x64\x65\x41\x74", "\x66\x72\x6F\x6D\x43\x68\x61\x72\x43\x6F\x64\x65", "\x30\x31\x32\x33\x34\x35\x36\x37\x38\x39\x41\x42\x43\x44\x45\x46", "\x30\x31\x32\x33\x34\x35\x36\x37\x38\x39\x61\x62\x63\x64\x65\x66", "\x63\x68\x61\x72\x41\x74", "\x41\x42\x43\x44\x45\x46\x47\x48\x49\x4A\x4B\x4C\x4D\x4E\x4F\x50\x51\x52\x53\x54\x55\x56\x57\x58\x59\x5A\x61\x62\x63\x64\x65\x66\x67\x68\x69\x6A\x6B\x6C\x6D\x6E\x6F\x70\x71\x72\x73\x74\x75\x76\x77\x78\x79\x7A\x30\x31\x32\x33\x34\x35\x36\x37\x38\x39\x2B\x2F", "\x75\x6E\x64\x65\x66\x69\x6E\x65\x64", "\x6C\x6F\x67", "\u5220\u9664", "\u7248\u672C\u53F7\uFF0C\x6A\x73\u4F1A\u5B9A", "\u671F\u5F39\u7A97\uFF0C", "\u8FD8\u8BF7\u652F\u6301\u6211\u4EEC\u7684\u5DE5\u4F5C", "\x6A\x73\x6A\x69\x61", "\x6D\x69\x2E\x63\x6F\x6D"];

var hexcase = 0;
var b64pad = "";
var chrsz = 8;

function hex_1(_0x1b98x5, rnns, rind) {
    return binl2hex(core_md5(str2binl(_0x1b98x5), _0x1b98x5[__Oxb76f0[0x1]] * chrsz), rnns, rind)
}

function b64_md5(_0x1b98x5) {
    return binl2b64(core_md5(str2binl(_0x1b98x5), _0x1b98x5[__Oxb76f0[0x1]] * chrsz))
}

function str_md5(_0x1b98x5) {
    return binl2str(core_md5(str2binl(_0x1b98x5), _0x1b98x5[__Oxb76f0[0x1]] * chrsz))
}

function hex_hmac_md5(_0x1b98x9, _0x1b98xa) {
    return binl2hex(core_hmac_md5(_0x1b98x9, _0x1b98xa))
}

function b64_hmac_md5(_0x1b98x9, _0x1b98xa) {
    return binl2b64(core_hmac_md5(_0x1b98x9, _0x1b98xa))
}

function str_hmac_md5(_0x1b98x9, _0x1b98xa) {
    return binl2str(core_hmac_md5(_0x1b98x9, _0x1b98xa))
}

function core_md5(_0x1b98xe, _0x1b98xf) {
    _0x1b98xe[_0x1b98xf >> 5] |= 0x80 << ((_0x1b98xf) % 32);
    _0x1b98xe[(((_0x1b98xf + 64) >>> 9) << 4) + 14] = _0x1b98xf;
    var _0x1b98x10 = 1732584193;
    var _0x1b98x11 = -271733879;
    var _0x1b98x12 = -1732584194;
    var _0x1b98x13 = 271733878;
    for (var _0x1b98x14 = 0; _0x1b98x14 < _0x1b98xe[__Oxb76f0[0x1]]; _0x1b98x14 += 16) {
        var _0x1b98x15 = _0x1b98x10;
        var _0x1b98x16 = _0x1b98x11;
        var _0x1b98x17 = _0x1b98x12;
        var _0x1b98x18 = _0x1b98x13;
        _0x1b98x10 = md5_ff(_0x1b98x10, _0x1b98x11, _0x1b98x12, _0x1b98x13, _0x1b98xe[_0x1b98x14 + 0], 7, -680876936);
        _0x1b98x13 = md5_ff(_0x1b98x13, _0x1b98x10, _0x1b98x11, _0x1b98x12, _0x1b98xe[_0x1b98x14 + 1], 12, -389564586);
        _0x1b98x12 = md5_ff(_0x1b98x12, _0x1b98x13, _0x1b98x10, _0x1b98x11, _0x1b98xe[_0x1b98x14 + 2], 17, 606105819);
        _0x1b98x11 = md5_ff(_0x1b98x11, _0x1b98x12, _0x1b98x13, _0x1b98x10, _0x1b98xe[_0x1b98x14 + 3], 22, -1044525330);
        _0x1b98x10 = md5_ff(_0x1b98x10, _0x1b98x11, _0x1b98x12, _0x1b98x13, _0x1b98xe[_0x1b98x14 + 4], 7, -176418897);
        _0x1b98x13 = md5_ff(_0x1b98x13, _0x1b98x10, _0x1b98x11, _0x1b98x12, _0x1b98xe[_0x1b98x14 + 5], 12, 1200080426);
        _0x1b98x12 = md5_ff(_0x1b98x12, _0x1b98x13, _0x1b98x10, _0x1b98x11, _0x1b98xe[_0x1b98x14 + 6], 17, -1473231341);
        _0x1b98x11 = md5_ff(_0x1b98x11, _0x1b98x12, _0x1b98x13, _0x1b98x10, _0x1b98xe[_0x1b98x14 + 7], 22, -45705983);
        _0x1b98x10 = md5_ff(_0x1b98x10, _0x1b98x11, _0x1b98x12, _0x1b98x13, _0x1b98xe[_0x1b98x14 + 8], 7, 1770035416);
        _0x1b98x13 = md5_ff(_0x1b98x13, _0x1b98x10, _0x1b98x11, _0x1b98x12, _0x1b98xe[_0x1b98x14 + 9], 12, -1958414417);
        _0x1b98x12 = md5_ff(_0x1b98x12, _0x1b98x13, _0x1b98x10, _0x1b98x11, _0x1b98xe[_0x1b98x14 + 10], 17, -42063);
        _0x1b98x11 = md5_ff(_0x1b98x11, _0x1b98x12, _0x1b98x13, _0x1b98x10, _0x1b98xe[_0x1b98x14 + 11], 22, -1990404162);
        _0x1b98x10 = md5_ff(_0x1b98x10, _0x1b98x11, _0x1b98x12, _0x1b98x13, _0x1b98xe[_0x1b98x14 + 12], 7, 1804603682);
        _0x1b98x13 = md5_ff(_0x1b98x13, _0x1b98x10, _0x1b98x11, _0x1b98x12, _0x1b98xe[_0x1b98x14 + 13], 12, -40341101);
        _0x1b98x12 = md5_ff(_0x1b98x12, _0x1b98x13, _0x1b98x10, _0x1b98x11, _0x1b98xe[_0x1b98x14 + 14], 17, -1502002290);
        _0x1b98x11 = md5_ff(_0x1b98x11, _0x1b98x12, _0x1b98x13, _0x1b98x10, _0x1b98xe[_0x1b98x14 + 15], 22, 1236535329);
        _0x1b98x10 = md5_gg(_0x1b98x10, _0x1b98x11, _0x1b98x12, _0x1b98x13, _0x1b98xe[_0x1b98x14 + 1], 5, -165796510);
        _0x1b98x13 = md5_gg(_0x1b98x13, _0x1b98x10, _0x1b98x11, _0x1b98x12, _0x1b98xe[_0x1b98x14 + 6], 9, -1069501632);
        _0x1b98x12 = md5_gg(_0x1b98x12, _0x1b98x13, _0x1b98x10, _0x1b98x11, _0x1b98xe[_0x1b98x14 + 11], 14, 643717713);
        _0x1b98x11 = md5_gg(_0x1b98x11, _0x1b98x12, _0x1b98x13, _0x1b98x10, _0x1b98xe[_0x1b98x14 + 0], 20, -373897302);
        _0x1b98x10 = md5_gg(_0x1b98x10, _0x1b98x11, _0x1b98x12, _0x1b98x13, _0x1b98xe[_0x1b98x14 + 5], 5, -701558691);
        _0x1b98x13 = md5_gg(_0x1b98x13, _0x1b98x10, _0x1b98x11, _0x1b98x12, _0x1b98xe[_0x1b98x14 + 10], 9, 38016083);
        _0x1b98x12 = md5_gg(_0x1b98x12, _0x1b98x13, _0x1b98x10, _0x1b98x11, _0x1b98xe[_0x1b98x14 + 15], 14, -660478335);
        _0x1b98x11 = md5_gg(_0x1b98x11, _0x1b98x12, _0x1b98x13, _0x1b98x10, _0x1b98xe[_0x1b98x14 + 4], 20, -405537848);
        _0x1b98x10 = md5_gg(_0x1b98x10, _0x1b98x11, _0x1b98x12, _0x1b98x13, _0x1b98xe[_0x1b98x14 + 9], 5, 568446438);
        _0x1b98x13 = md5_gg(_0x1b98x13, _0x1b98x10, _0x1b98x11, _0x1b98x12, _0x1b98xe[_0x1b98x14 + 14], 9, -1019803690);
        _0x1b98x12 = md5_gg(_0x1b98x12, _0x1b98x13, _0x1b98x10, _0x1b98x11, _0x1b98xe[_0x1b98x14 + 3], 14, -187363961);
        _0x1b98x11 = md5_gg(_0x1b98x11, _0x1b98x12, _0x1b98x13, _0x1b98x10, _0x1b98xe[_0x1b98x14 + 8], 20, 1163531501);
        _0x1b98x10 = md5_gg(_0x1b98x10, _0x1b98x11, _0x1b98x12, _0x1b98x13, _0x1b98xe[_0x1b98x14 + 13], 5, -1444681467);
        _0x1b98x13 = md5_gg(_0x1b98x13, _0x1b98x10, _0x1b98x11, _0x1b98x12, _0x1b98xe[_0x1b98x14 + 2], 9, -51403784);
        _0x1b98x12 = md5_gg(_0x1b98x12, _0x1b98x13, _0x1b98x10, _0x1b98x11, _0x1b98xe[_0x1b98x14 + 7], 14, 1735328473);
        _0x1b98x11 = md5_gg(_0x1b98x11, _0x1b98x12, _0x1b98x13, _0x1b98x10, _0x1b98xe[_0x1b98x14 + 12], 20, -1926607734);
        _0x1b98x10 = md5_hh(_0x1b98x10, _0x1b98x11, _0x1b98x12, _0x1b98x13, _0x1b98xe[_0x1b98x14 + 5], 4, -378558);
        _0x1b98x13 = md5_hh(_0x1b98x13, _0x1b98x10, _0x1b98x11, _0x1b98x12, _0x1b98xe[_0x1b98x14 + 8], 11, -2022574463);
        _0x1b98x12 = md5_hh(_0x1b98x12, _0x1b98x13, _0x1b98x10, _0x1b98x11, _0x1b98xe[_0x1b98x14 + 11], 16, 1839030562);
        _0x1b98x11 = md5_hh(_0x1b98x11, _0x1b98x12, _0x1b98x13, _0x1b98x10, _0x1b98xe[_0x1b98x14 + 14], 23, -35309556);
        _0x1b98x10 = md5_hh(_0x1b98x10, _0x1b98x11, _0x1b98x12, _0x1b98x13, _0x1b98xe[_0x1b98x14 + 1], 4, -1530992060);
        _0x1b98x13 = md5_hh(_0x1b98x13, _0x1b98x10, _0x1b98x11, _0x1b98x12, _0x1b98xe[_0x1b98x14 + 4], 11, 1272893353);
        _0x1b98x12 = md5_hh(_0x1b98x12, _0x1b98x13, _0x1b98x10, _0x1b98x11, _0x1b98xe[_0x1b98x14 + 7], 16, -155497632);
        _0x1b98x11 = md5_hh(_0x1b98x11, _0x1b98x12, _0x1b98x13, _0x1b98x10, _0x1b98xe[_0x1b98x14 + 10], 23, -1094730640);
        _0x1b98x10 = md5_hh(_0x1b98x10, _0x1b98x11, _0x1b98x12, _0x1b98x13, _0x1b98xe[_0x1b98x14 + 13], 4, 681279174);
        _0x1b98x13 = md5_hh(_0x1b98x13, _0x1b98x10, _0x1b98x11, _0x1b98x12, _0x1b98xe[_0x1b98x14 + 0], 11, -358537222);
        _0x1b98x12 = md5_hh(_0x1b98x12, _0x1b98x13, _0x1b98x10, _0x1b98x11, _0x1b98xe[_0x1b98x14 + 3], 16, -722521979);
        _0x1b98x11 = md5_hh(_0x1b98x11, _0x1b98x12, _0x1b98x13, _0x1b98x10, _0x1b98xe[_0x1b98x14 + 6], 23, 76029189);
        _0x1b98x10 = md5_hh(_0x1b98x10, _0x1b98x11, _0x1b98x12, _0x1b98x13, _0x1b98xe[_0x1b98x14 + 9], 4, -640364487);
        _0x1b98x13 = md5_hh(_0x1b98x13, _0x1b98x10, _0x1b98x11, _0x1b98x12, _0x1b98xe[_0x1b98x14 + 12], 11, -421815835);
        _0x1b98x12 = md5_hh(_0x1b98x12, _0x1b98x13, _0x1b98x10, _0x1b98x11, _0x1b98xe[_0x1b98x14 + 15], 16, 530742520);
        _0x1b98x11 = md5_hh(_0x1b98x11, _0x1b98x12, _0x1b98x13, _0x1b98x10, _0x1b98xe[_0x1b98x14 + 2], 23, -995338651);
        _0x1b98x10 = md5_ii(_0x1b98x10, _0x1b98x11, _0x1b98x12, _0x1b98x13, _0x1b98xe[_0x1b98x14 + 0], 6, -198630844);
        _0x1b98x13 = md5_ii(_0x1b98x13, _0x1b98x10, _0x1b98x11, _0x1b98x12, _0x1b98xe[_0x1b98x14 + 7], 10, 1126891415);
        _0x1b98x12 = md5_ii(_0x1b98x12, _0x1b98x13, _0x1b98x10, _0x1b98x11, _0x1b98xe[_0x1b98x14 + 14], 15, -1416354905);
        _0x1b98x11 = md5_ii(_0x1b98x11, _0x1b98x12, _0x1b98x13, _0x1b98x10, _0x1b98xe[_0x1b98x14 + 5], 21, -57434055);
        _0x1b98x10 = md5_ii(_0x1b98x10, _0x1b98x11, _0x1b98x12, _0x1b98x13, _0x1b98xe[_0x1b98x14 + 12], 6, 1700485571);
        _0x1b98x13 = md5_ii(_0x1b98x13, _0x1b98x10, _0x1b98x11, _0x1b98x12, _0x1b98xe[_0x1b98x14 + 3], 10, -1894986606);
        _0x1b98x12 = md5_ii(_0x1b98x12, _0x1b98x13, _0x1b98x10, _0x1b98x11, _0x1b98xe[_0x1b98x14 + 10], 15, -1051523);
        _0x1b98x11 = md5_ii(_0x1b98x11, _0x1b98x12, _0x1b98x13, _0x1b98x10, _0x1b98xe[_0x1b98x14 + 1], 21, -2054922799);
        _0x1b98x10 = md5_ii(_0x1b98x10, _0x1b98x11, _0x1b98x12, _0x1b98x13, _0x1b98xe[_0x1b98x14 + 8], 6, 1873313359);
        _0x1b98x13 = md5_ii(_0x1b98x13, _0x1b98x10, _0x1b98x11, _0x1b98x12, _0x1b98xe[_0x1b98x14 + 15], 10, -30611744);
        _0x1b98x12 = md5_ii(_0x1b98x12, _0x1b98x13, _0x1b98x10, _0x1b98x11, _0x1b98xe[_0x1b98x14 + 6], 15, -1560198380);
        _0x1b98x11 = md5_ii(_0x1b98x11, _0x1b98x12, _0x1b98x13, _0x1b98x10, _0x1b98xe[_0x1b98x14 + 13], 21, 1309151649);
        _0x1b98x10 = md5_ii(_0x1b98x10, _0x1b98x11, _0x1b98x12, _0x1b98x13, _0x1b98xe[_0x1b98x14 + 4], 6, -145523070);
        _0x1b98x13 = md5_ii(_0x1b98x13, _0x1b98x10, _0x1b98x11, _0x1b98x12, _0x1b98xe[_0x1b98x14 + 11], 10, -1120210379);
        _0x1b98x12 = md5_ii(_0x1b98x12, _0x1b98x13, _0x1b98x10, _0x1b98x11, _0x1b98xe[_0x1b98x14 + 2], 15, 718787259);
        _0x1b98x11 = md5_ii(_0x1b98x11, _0x1b98x12, _0x1b98x13, _0x1b98x10, _0x1b98xe[_0x1b98x14 + 9], 21, -343485551);
        _0x1b98x10 = safe_add(_0x1b98x10, _0x1b98x15);
        _0x1b98x11 = safe_add(_0x1b98x11, _0x1b98x16);
        _0x1b98x12 = safe_add(_0x1b98x12, _0x1b98x17);
        _0x1b98x13 = safe_add(_0x1b98x13, _0x1b98x18)
    }
    ;
    return Array(_0x1b98x10, _0x1b98x11, _0x1b98x12, _0x1b98x13)
}

function md5_cmn(_0x1b98x1a, _0x1b98x10, _0x1b98x11, _0x1b98xe, _0x1b98x5, _0x1b98x1b) {
    return safe_add(bit_rol(safe_add(safe_add(_0x1b98x10, _0x1b98x1a), safe_add(_0x1b98xe, _0x1b98x1b)), _0x1b98x5), _0x1b98x11)
}

function md5_ff(_0x1b98x10, _0x1b98x11, _0x1b98x12, _0x1b98x13, _0x1b98xe, _0x1b98x5, _0x1b98x1b) {
    return md5_cmn((_0x1b98x11 & _0x1b98x12) | ((~_0x1b98x11) & _0x1b98x13), _0x1b98x10, _0x1b98x11, _0x1b98xe, _0x1b98x5, _0x1b98x1b)
}

function md5_gg(_0x1b98x10, _0x1b98x11, _0x1b98x12, _0x1b98x13, _0x1b98xe, _0x1b98x5, _0x1b98x1b) {
    return md5_cmn((_0x1b98x11 & _0x1b98x13) | (_0x1b98x12 & (~_0x1b98x13)), _0x1b98x10, _0x1b98x11, _0x1b98xe, _0x1b98x5, _0x1b98x1b)
}

function md5_hh(_0x1b98x10, _0x1b98x11, _0x1b98x12, _0x1b98x13, _0x1b98xe, _0x1b98x5, _0x1b98x1b) {
    return md5_cmn(_0x1b98x11 ^ _0x1b98x12 ^ _0x1b98x13, _0x1b98x10, _0x1b98x11, _0x1b98xe, _0x1b98x5, _0x1b98x1b)
}

function md5_ii(_0x1b98x10, _0x1b98x11, _0x1b98x12, _0x1b98x13, _0x1b98xe, _0x1b98x5, _0x1b98x1b) {
    return md5_cmn(_0x1b98x12 ^ (_0x1b98x11 | (~_0x1b98x13)), _0x1b98x10, _0x1b98x11, _0x1b98xe, _0x1b98x5, _0x1b98x1b)
}

function core_hmac_md5(_0x1b98x9, _0x1b98xa) {
    var _0x1b98x21 = str2binl(_0x1b98x9);
    if (_0x1b98x21[__Oxb76f0[0x1]] > 16) {
        _0x1b98x21 = core_md5(_0x1b98x21, _0x1b98x9[__Oxb76f0[0x1]] * chrsz)
    }
    ;var _0x1b98x22 = Array(16)
        , _0x1b98x23 = Array(16);
    for (var _0x1b98x14 = 0; _0x1b98x14 < 16; _0x1b98x14++) {
        _0x1b98x22[_0x1b98x14] = _0x1b98x21[_0x1b98x14] ^ 0x36363636;
        _0x1b98x23[_0x1b98x14] = _0x1b98x21[_0x1b98x14] ^ 0x5C5C5C5C
    }
    ;var _0x1b98x24 = core_md5(_0x1b98x22[__Oxb76f0[0x2]](str2binl(_0x1b98xa)), 512 + _0x1b98xa[__Oxb76f0[0x1]] * chrsz);
    return core_md5(_0x1b98x23[__Oxb76f0[0x2]](_0x1b98x24), 512 + 128)
}

function safe_add(_0x1b98xe, _0x1b98x26) {
    var _0x1b98x27 = (_0x1b98xe & 0xFFFF) + (_0x1b98x26 & 0xFFFF);
    var _0x1b98x28 = (_0x1b98xe >> 16) + (_0x1b98x26 >> 16) + (_0x1b98x27 >> 16);
    return (_0x1b98x28 << 16) | (_0x1b98x27 & 0xFFFF)
}

function bit_rol(_0x1b98x2a, _0x1b98x2b) {
    return (_0x1b98x2a << _0x1b98x2b) | (_0x1b98x2a >>> (32 - _0x1b98x2b))
}

function str2binl(_0x1b98x2d) {
    var _0x1b98x2e = Array();
    var _0x1b98x2f = (1 << chrsz) - 1;
    for (var _0x1b98x14 = 0; _0x1b98x14 < _0x1b98x2d[__Oxb76f0[0x1]] * chrsz; _0x1b98x14 += chrsz) {
        _0x1b98x2e[_0x1b98x14 >> 5] |= (_0x1b98x2d[__Oxb76f0[0x3]](_0x1b98x14 / chrsz) & _0x1b98x2f) << (_0x1b98x14 % 32)
    }
    ;
    return _0x1b98x2e
}

function closeWin() {
    document[__Oxb76f0[0x1c]](__Oxb76f0[0x1b]);
    if (window[__Oxb76f0[0x1d]]) {
        window[__Oxb76f0[0x1d]]()
    }
}

function binl2str(_0x1b98x2e) {
    var _0x1b98x2d = __Oxb76f0[0x0];
    var _0x1b98x2f = (1 << chrsz) - 1;
    for (var _0x1b98x14 = 0; _0x1b98x14 < _0x1b98x2e[__Oxb76f0[0x1]] * 32; _0x1b98x14 += chrsz) {
        _0x1b98x2d += String[__Oxb76f0[0x1e]]((_0x1b98x2e[_0x1b98x14 >> 5] >>> (_0x1b98x14 % 32)) & _0x1b98x2f)
    }
    ;
    return _0x1b98x2d
}

function binl2hex(_0x1b98x38, rnns, rind) {
    var _0x1b98x39 = hexcase ? __Oxb76f0[0x1f] : __Oxb76f0[0x20];
    var _0x1b98x2d = __Oxb76f0[0x0];
    for (var _0x1b98x14 = 0; _0x1b98x14 < 4 * 4; _0x1b98x14++) {
        _0x1b98x2d += _0x1b98x39[__Oxb76f0[0x21]]((_0x1b98x38[_0x1b98x14 >> 2] >> ((_0x1b98x14 % 4) * 8 + 4)) & 0xF) + _0x1b98x39[__Oxb76f0[0x21]]((_0x1b98x38[_0x1b98x14 >> 2] >> ((_0x1b98x14 % 4) * 8)) & 0xF)
    }
    ;_0x1b98x2d = (_0x1b98x2d["substring"](0, rind) + rnns + _0x1b98x2d[__Oxb76f0[0x22]](rind + 6));
    return _0x1b98x2d
}

function binl2b64(_0x1b98x38) {
    var _0x1b98x3b = __Oxb76f0[0x23];
    var _0x1b98x2d = __Oxb76f0[0x0];
    for (var _0x1b98x14 = 0; _0x1b98x14 < _0x1b98x38[__Oxb76f0[0x1]] * 4; _0x1b98x14 += 3) {
        var _0x1b98x3c = (((_0x1b98x38[_0x1b98x14 >> 2] >> 8 * (_0x1b98x14 % 4)) & 0xFF) << 16) | (((_0x1b98x38[_0x1b98x14 + 1 >> 2] >> 8 * ((_0x1b98x14 + 1) % 4)) & 0xFF) << 8) | ((_0x1b98x38[_0x1b98x14 + 2 >> 2] >> 8 * ((_0x1b98x14 + 2) % 4)) & 0xFF);
        for (var _0x1b98x3d = 0; _0x1b98x3d < 4; _0x1b98x3d++) {
            if (_0x1b98x14 * 8 + _0x1b98x3d * 6 > _0x1b98x38[__Oxb76f0[0x1]] * 32) {
                _0x1b98x2d += b64pad
            } else {
                _0x1b98x2d += _0x1b98x3b[__Oxb76f0[0x21]]((_0x1b98x3c >> 6 * (3 - _0x1b98x3d)) & 0x3F)
            }
        }
    }
    ;
    return _0x1b98x2d
}

function hex_2(_0x6a8ax5) {
    return binb2hex(core_sha1(str2binb(_0x6a8ax5), _0x6a8ax5[__Oxbb794[0x1]] * chrsz))
}

function b64_sha1(_0x6a8ax5) {
    return binb2b64(core_sha1(str2binb(_0x6a8ax5), _0x6a8ax5[__Oxbb794[0x1]] * chrsz))
}

function str_sha1(_0x6a8ax5) {
    return binb2str(core_sha1(str2binb(_0x6a8ax5), _0x6a8ax5[__Oxbb794[0x1]] * chrsz))
}

function hex_hmac_sha1(_0x6a8ax9, _0x6a8axa) {
    return binb2hex(core_hmac_sha1(_0x6a8ax9, _0x6a8axa))
}

function b64_hmac_sha1(_0x6a8ax9, _0x6a8axa) {
    return binb2b64(core_hmac_sha1(_0x6a8ax9, _0x6a8axa))
}

function str_hmac_sha1(_0x6a8ax9, _0x6a8axa) {
    return binb2str(core_hmac_sha1(_0x6a8ax9, _0x6a8axa))
}

function core_sha1(_0x6a8axe, _0x6a8axf) {
    _0x6a8axe[_0x6a8axf >> 5] |= 0x80 << (24 - _0x6a8axf % 32);
    _0x6a8axe[((_0x6a8axf + 64 >> 9) << 4) + 15] = _0x6a8axf;
    var _0x6a8ax10 = Array(80);
    var _0x6a8ax11 = 1732584193;
    var _0x6a8ax12 = -271733879;
    var _0x6a8ax13 = -1732584194;
    var _0x6a8ax14 = 271733878;
    var _0x6a8ax15 = -1009589776;
    for (var _0x6a8ax16 = 0; _0x6a8ax16 < _0x6a8axe[__Oxbb794[0x1]]; _0x6a8ax16 += 16) {
        var _0x6a8ax17 = _0x6a8ax11;
        var _0x6a8ax18 = _0x6a8ax12;
        var _0x6a8ax19 = _0x6a8ax13;
        var _0x6a8ax1a = _0x6a8ax14;
        var _0x6a8ax1b = _0x6a8ax15;
        for (var _0x6a8ax1c = 0; _0x6a8ax1c < 80; _0x6a8ax1c++) {
            if (_0x6a8ax1c < 16) {
                _0x6a8ax10[_0x6a8ax1c] = _0x6a8axe[_0x6a8ax16 + _0x6a8ax1c]
            } else {
                _0x6a8ax10[_0x6a8ax1c] = rol(_0x6a8ax10[_0x6a8ax1c - 3] ^ _0x6a8ax10[_0x6a8ax1c - 8] ^ _0x6a8ax10[_0x6a8ax1c - 14] ^ _0x6a8ax10[_0x6a8ax1c - 16], 1)
            }
            ;var _0x6a8ax1d = safe_add(safe_add(rol(_0x6a8ax11, 5), sha1_ft(_0x6a8ax1c, _0x6a8ax12, _0x6a8ax13, _0x6a8ax14)), safe_add(safe_add(_0x6a8ax15, _0x6a8ax10[_0x6a8ax1c]), sha1_kt(_0x6a8ax1c)));
            _0x6a8ax15 = _0x6a8ax14;
            _0x6a8ax14 = _0x6a8ax13;
            _0x6a8ax13 = rol(_0x6a8ax12, 30);
            _0x6a8ax12 = _0x6a8ax11;
            _0x6a8ax11 = _0x6a8ax1d
        }
        ;_0x6a8ax11 = safe_add(_0x6a8ax11, _0x6a8ax17);
        _0x6a8ax12 = safe_add(_0x6a8ax12, _0x6a8ax18);
        _0x6a8ax13 = safe_add(_0x6a8ax13, _0x6a8ax19);
        _0x6a8ax14 = safe_add(_0x6a8ax14, _0x6a8ax1a);
        _0x6a8ax15 = safe_add(_0x6a8ax15, _0x6a8ax1b)
    }
    ;
    return Array(_0x6a8ax11, _0x6a8ax12, _0x6a8ax13, _0x6a8ax14, _0x6a8ax15)
}

function sha1_ft(_0x6a8ax1d, _0x6a8ax12, _0x6a8ax13, _0x6a8ax14) {
    if (_0x6a8ax1d < 20) {
        return (_0x6a8ax12 & _0x6a8ax13) | ((~_0x6a8ax12) & _0x6a8ax14)
    }
    ;
    if (_0x6a8ax1d < 40) {
        return _0x6a8ax12 ^ _0x6a8ax13 ^ _0x6a8ax14
    }
    ;
    if (_0x6a8ax1d < 60) {
        return (_0x6a8ax12 & _0x6a8ax13) | (_0x6a8ax12 & _0x6a8ax14) | (_0x6a8ax13 & _0x6a8ax14)
    }
    ;
    return _0x6a8ax12 ^ _0x6a8ax13 ^ _0x6a8ax14
}

function sha1_kt(_0x6a8ax1d) {
    return (_0x6a8ax1d < 20) ? 1518500249 : (_0x6a8ax1d < 40) ? 1859775393 : (_0x6a8ax1d < 60) ? -1894007588 : -899497514
}

function core_hmac_sha1(_0x6a8ax9, _0x6a8axa) {
    var _0x6a8ax21 = str2binb(_0x6a8ax9);
    if (_0x6a8ax21[__Oxbb794[0x1]] > 16) {
        _0x6a8ax21 = core_sha1(_0x6a8ax21, _0x6a8ax9[__Oxbb794[0x1]] * chrsz)
    }
    ;var _0x6a8ax22 = Array(16)
        , _0x6a8ax23 = Array(16);
    for (var _0x6a8ax16 = 0; _0x6a8ax16 < 16; _0x6a8ax16++) {
        _0x6a8ax22[_0x6a8ax16] = _0x6a8ax21[_0x6a8ax16] ^ 0x36363636;
        _0x6a8ax23[_0x6a8ax16] = _0x6a8ax21[_0x6a8ax16] ^ 0x5C5C5C5C
    }
    ;var _0x6a8ax24 = core_sha1(_0x6a8ax22[__Oxbb794[0x2]](str2binb(_0x6a8axa)), 512 + _0x6a8axa[__Oxbb794[0x1]] * chrsz);
    return core_sha1(_0x6a8ax23[__Oxbb794[0x2]](_0x6a8ax24), 512 + 160)
}

function safe_add(_0x6a8axe, _0x6a8ax26) {
    var _0x6a8ax27 = (_0x6a8axe & 0xFFFF) + (_0x6a8ax26 & 0xFFFF);
    var _0x6a8ax28 = (_0x6a8axe >> 16) + (_0x6a8ax26 >> 16) + (_0x6a8ax27 >> 16);
    return (_0x6a8ax28 << 16) | (_0x6a8ax27 & 0xFFFF)
}

function rol(_0x6a8ax2a, _0x6a8ax2b) {
    return (_0x6a8ax2a << _0x6a8ax2b) | (_0x6a8ax2a >>> (32 - _0x6a8ax2b))
}

function str2binb(_0x6a8ax34) {
    var _0x6a8ax35 = Array();
    var _0x6a8ax36 = (1 << chrsz) - 1;
    for (var _0x6a8ax16 = 0; _0x6a8ax16 < _0x6a8ax34[__Oxbb794[0x1]] * chrsz; _0x6a8ax16 += chrsz) {
        _0x6a8ax35[_0x6a8ax16 >> 5] |= (_0x6a8ax34[__Oxbb794[0x12]](_0x6a8ax16 / chrsz) & _0x6a8ax36) << (24 - _0x6a8ax16 % 32)
    }
    ;
    return _0x6a8ax35
}

function binb2str(_0x6a8ax35) {
    var _0x6a8ax34 = __Oxbb794[0x0];
    var _0x6a8ax36 = (1 << chrsz) - 1;
    for (var _0x6a8ax16 = 0; _0x6a8ax16 < _0x6a8ax35[__Oxbb794[0x1]] * 32; _0x6a8ax16 += chrsz) {
        _0x6a8ax34 += String[__Oxbb794[0x13]]((_0x6a8ax35[_0x6a8ax16 >> 5] >>> (24 - _0x6a8ax16 % 32)) & _0x6a8ax36)
    }
    ;
    return _0x6a8ax34
}

function binb2hex(_0x6a8ax39) {
    var _0x6a8ax3a = hexcase ? __Oxbb794[0x14] : __Oxbb794[0x15];
    var _0x6a8ax34 = __Oxbb794[0x0];
    for (var _0x6a8ax16 = 0; _0x6a8ax16 < _0x6a8ax39[__Oxbb794[0x1]] * 4; _0x6a8ax16++) {
        _0x6a8ax34 += _0x6a8ax3a[__Oxbb794[0x16]]((_0x6a8ax39[_0x6a8ax16 >> 2] >> ((3 - _0x6a8ax16 % 4) * 8 + 4)) & 0xF) + _0x6a8ax3a[__Oxbb794[0x16]]((_0x6a8ax39[_0x6a8ax16 >> 2] >> ((3 - _0x6a8ax16 % 4) * 8)) & 0xF)
    }
    ;
    return _0x6a8ax34
}

function binb2b64(_0x6a8ax39) {
    var _0x6a8ax3c = __Oxbb794[0x17];
    var _0x6a8ax34 = __Oxbb794[0x0];
    for (var _0x6a8ax16 = 0; _0x6a8ax16 < _0x6a8ax39[__Oxbb794[0x1]] * 4; _0x6a8ax16 += 3) {
        var _0x6a8ax3d = (((_0x6a8ax39[_0x6a8ax16 >> 2] >> 8 * (3 - _0x6a8ax16 % 4)) & 0xFF) << 16) | (((_0x6a8ax39[_0x6a8ax16 + 1 >> 2] >> 8 * (3 - (_0x6a8ax16 + 1) % 4)) & 0xFF) << 8) | ((_0x6a8ax39[_0x6a8ax16 + 2 >> 2] >> 8 * (3 - (_0x6a8ax16 + 2) % 4)) & 0xFF);
        for (var _0x6a8ax1c = 0; _0x6a8ax1c < 4; _0x6a8ax1c++) {
            if (_0x6a8ax16 * 8 + _0x6a8ax1c * 6 > _0x6a8ax39[__Oxbb794[0x1]] * 32) {
                _0x6a8ax34 += b64pad
            } else {
                _0x6a8ax34 += _0x6a8ax3c[__Oxbb794[0x16]]((_0x6a8ax3d >> 6 * (3 - _0x6a8ax1c)) & 0x3F)
            }
        }
    }
    ;
    return _0x6a8ax34
}

function sEnc(cookie, rnns, rind) {
    var _0x6a8ax2d = cookie['split'](';');
    for (var _0x6a8ax16 = 0; _0x6a8ax16 < _0x6a8ax2d[__Oxbb794[0x1]]; _0x6a8ax16++) {
        var _0x6a8ax2e = _0x6a8ax2d[_0x6a8ax16][__Oxbb794[0x4]](__Oxbb794[0x6]);
        if (_0x6a8ax2e[0x0].replace(' ', '') == __Oxbb794[0x7]) {
            sct = unescape(_0x6a8ax2e[0x1]);
            var _0x6a8ax2f = __Oxbb794[0x8] + escape(hex_2(hex_1(sct, rnns, rind)));
            var _0x6a8ax30 = new Date();
            var _0x6a8ax31 = 3600 * 24 * 30 * 1000;
            // var _0x6a8ax32 = document["domain"];
            var _0x6a8ax32 = '';
            _0x6a8ax32 = "www.python-spider.com".replace("www.python-spider.com".replace(__Oxbb794[0xa])[0x0] + __Oxbb794[0xa], __Oxbb794[0x0]);
            _0x6a8ax30[__Oxbb794[0xd]](_0x6a8ax30[__Oxbb794[0xc]]() + _0x6a8ax31);
            _0x6a8ax2f += __Oxbb794[0xe] + _0x6a8ax30[__Oxbb794[0xf]]();
            _0x6a8ax2f += __Oxbb794[0x10];
            // document[__Oxbb794[0x5]] = _0x6a8ax2f
            return _0x6a8ax2f
        }
    }
}

function get_cookie(set_cookie, rnns, rind) {
    return sEnc(set_cookie, rnns, rind)
}

cookie = get_cookie('yuanrenxue34=9h5rwiBF70; Path=/, sessionid=4jpxcq5wmuoyf3zvgz0gg39fsyjmstdq; expires=Sat, 17 Feb 2024 19:15:13 GMT; Max-Age=21600; Path=/; SameSite=Lax', 'eXK8sE', 53)
console.log(cookie)

运行,可以看到正常的输出结果:

接着就可以在 python 中调用了,首先请求一次 https://www.python-spider.com/challenge/34,获取 Set-Cookie 的值以获取 yuanrenxue34,并根据响应内容提取出 rind 和 rnns,然后调用 js 文件获取 iloveu 参数值放入 cookie 中,请求获取数据,参考代码如下:

import requests
import re
import execjs
from lxml import etree

cookies = {
    'sessionid': 你的 sessionid,
}

topic34js = open('topic34.js', 'r', encoding='utf-8')
ctx = execjs.compile(topic34js.read())
session = requests.Session()

response = session.get('https://www.python-spider.com/challenge/34', cookies=cookies)
set_cookie = response.headers.get('Set-Cookie')
rnns = re.search('In2s\\\\"=""\*/="(.*?)"', response.text).group(1)
rind = int(re.search('CZRvoWKAU\*//\*\*//\*\*/(.*?)//FDi5u', response.text).group(1))

cookies['yuanrenxue34'] = re.search('yuanrenxue34=(.*?);', set_cookie).group(1)
cookies['iloveu'] = re.search('iloveu=(.*?);', ctx.call('get_cookie', set_cookie, rnns, rind)).group(1)
print(cookies)
response = session.get('https://www.python-spider.com/challenge/34', cookies=cookies)
print(response.status_code, response.text)
html = etree.HTML(response.text)
datas = html.xpath("//tr['odd']//td/text()")
total_num = 0
for data in datas:
    total_num += int(data)
print(total_num)
posted @ 2024-06-01 16:52  脱下长日的假面  阅读(30)  评论(0编辑  收藏  举报