🌈据说,看我文章时 关注、点赞、收藏 的 帅哥美女们 心情都会不自觉的好起来。
前言:
🧡作者简介:大家好我是 user_from_future ,意思是 “ 来自未来的用户 ” ,寓意着未来的自己一定很棒~
✨个人主页:点我直达,在这里肯定能找到你想要的~
👍专栏介绍:猿人学WEB题目专解 ,提供猿人学WEB题目总计20题的解题思路与方法,如有讲述错误,请不吝赐教。
想看往期历史文章,可以浏览此博文: 历史文章目录
,后续所有文章发布都会同步更新此博文~
题目网址
题目详情
让我们计算 加和。
题目思路
我们像往常一样找入口函数,在这题面前却显得不一样:
这题用了原始的 XMLHttpRequest
请求方式,没用 ajax
请求方式,但是我们却看不到哪里有加密的东西,我们只看到了 location.href + 'data?page=' + page
,我们再观察一下前三页的请求,发现只有第一页没有其他两个参数:
那么还有两个参数哪里来的呢?
我们新建一个 XHR
断点:
鼠标不经意间滑动到 xml.open
方法上:
很明显这个函数被动过手脚了,不再是原来的函数了,我们继续往下。
重新打断点,打在 open
上:
发现跳转到了这个鬼都看不懂的代码堆里:
放上这段令人头皮发麻的代码段:(不想看?我经历的痛苦你也要跟着经历😏😏😏)
!function(_, __) {
var ___ = "undefined" == typeof global ? window : global
, v__ = [[___, null, null, this, arguments]]
, V__ = String.fromCharCode
, y__ = decodeURIComponent
, u__ = ReferenceError
, U__ = Object.keys
, _v_ = parseFloat
, _V_ = parseInt
, _y_ = Math.pow
, _u_ = RegExp
, _U_ = ___.BigInt
, __v = 1
, __V = []
, __y = []
, __u = Vu_(48, 58) + Vu_(97, 123)
, __U = Vu_(65, 91)
, v_ = "[" + __U + "]*[" + __u + "]"
, V_ = __u + __U
, y_ = /[0-9a-f]{2}/g
, u_ = "%$&"
, U_ = "$"
, _v = " is not defined"
, _V = "null"
, _y = "number"
, _u = "object"
, _U = "0"
, vv_ = "g"
, vV_ = ""
, vy_ = "arguments";
function vu_(_, __) {
return _.push(__)
}
function vU_(_) {
return _.pop()
}
function v_v(_) {
return _.length
}
function v_V(_, __) {
return _.indexOf(__)
}
function v_y(_, __) {
return _.lastIndexOf(__)
}
function v_u(_, __) {
return _.toString(__)
}
function v_U(_) {
return y__(_.replace(y_, u_))
}
function Vv_(_, __) {
return _.hasOwnProperty(__)
}
function VV_(_) {
return _V_(_, 16)
}
function Vy_(_, __) {
if (3 == __ || 6 == __ || 28 == __ || 15 == __ || 11 == __ || 13 == __ || 30 == __ || 41 == __) {
(u__ = {
})._ = __;
var ___ = function(_, __) {
var ___, v__ = V_V(__), y__ = v__[0], u__ = v__[1], U__ = __V[y__];
function _y_(_, __) {
return V_y(v_U(_))[0] ^ 127 & __
}
function __v(_, __) {
return V_u(V_y(v_U(_)), 127 & __)
}
if (3 == _ && (___ = _y_(U__, y__)),
6 == _ && (___ = v_U(U__)),
28 == _ && (___ = null),
15 == _ && (___ = v_U(U__)),
11 == _ && (___ = _v_(__v(U__, y__))),
13 == _ && (___ = !!_V_(V__(_y_(U__, y__)))),
30 == _ && (___ = _U_(__v(U__, y__))),
41 == _) {
var __y = __v(U__, y__)
, __u = __y.slice(0, v_y(__y, U_))
, __U = __y.slice(v_y(__y, U_) + 1);
___ = _u_(__u, __U)
}
return [___, y__, u__]
}(__, _.slice(__v, 10));
return u__[__] = ___[0],
[function(_, __, ___) {
var v__ = v_V(__y, _[__]);
return -1 == v__ ? (vu_(__y, _[__]),
_[__] = v_v(__y) - 1) : _[__] = v__,
_.__ = ___,
_
}(u__, __, ___[1]), ___[2]]
}
for (var v__ = V_U(_, __v)[0], y__ = [], u__ = {
}; v_v(v__); ) {
var U__ = VU_(v__.slice(0, __v));
if (3 != U__ && 6 != U__ && 28 != U__ && 15 != U__ && 11 != U__ && 13 != U__ && 30 != U__ && 41 != U__) {
var _y_ = V_U(v__, __v, 1);
vu_(y__, V_v(v__)),
v__ = v__.slice(_y_[1])
} else {
var __u = V_v(v__);
vu_(y__, __u[0]),
v__ = v__.slice(__v + __u[1])
}
}
return u__[__] = y__,
u__._ = __,
u__
}
function Vu_(_, __) {
for (var ___ = "", v__ = _; v__ < __; v__++)
___ += V__(v__);
return ___
}
function VU_(_) {
return v_V(V_, _)
}
function V_v(_) {
var __ = VU_(_.slice(0, __v));
return Vy_(_, __)
}
function V_V(_) {
var __ = 0
, ___ = _.match(v_)[0]
, v__ = ___.slice(0, -1)
, V__ = ___[v_v(___) - 1];
__ += v_V(__u, V__);
for (var y__ = 0, u__ = v_v(v__) - 1; u__ >= 0; u__--)
__ += v_V(__U, v__[u__]) * _y_(v_v(__U), y__) * v_v(__u),
y__ += 1;
return [__, v_v(___)]
}
function V_y(_) {
for (var __, ___ = [], v__ = 0; v__ < v_v(_); v__++)
___[v__] = (__ = v__,
_.charCodeAt(__));
return ___
}
function V_u(_, __) {
for (var ___ = [], v__ = 0; v__ < v_v(_); v__++)
___[v__] = V__(_[v__] ^ __);
return ___.join(vV_)
}
function V_U(_, __, ___) {
var v__ = V_V(__ ? _.slice(__) : _);
return [___ ? null : _.slice(__ + v__[1], __ + v__[0] + v__[1]), __ + v__[0] + v__[1]]
}
!function(_) {
function __(_, __) {
var ___ = __y[_[__]];
return !___ || 15 != __ && 6 != __ ? ___ : V_u(V_y(___), 127 & _.__)
}
function ___(_) {
return _[v_v(_) - 1]
}
function V__(_, __) {
return _[v_v(_) - 1] = __
}
function y__(_) {
if (Array.isArray(_)) {
for (var __ = 0, ___ = Array(v_v(_)); __ < v_v(_); __++)
___[__] = _[__];
return ___
}
return Array.from(_)
}
function _v_(_, __, v__) {
if (__ == _V)
return null;
if (__ == vy_)
return ___(_)[4];
for (var V__ = v_v(_) - 1; V__ >= 0; V__--) {
if (Vv_(_[V__][0], __))
return _[V__][0][__];
if (0 == V__ && _[V__][0][__])
return _[V__][0][__]
}
if (