【猿人学WEB题目专解】猿人学第18题

🌈据说,看我文章时 关注、点赞、收藏帅哥美女们 心情都会不自觉的好起来。

前言:
🧡作者简介:大家好我是 user_from_future ,意思是 “ 来自未来的用户 ” ,寓意着未来的自己一定很棒~
✨个人主页:点我直达,在这里肯定能找到你想要的~
👍专栏介绍:猿人学WEB题目专解 ,提供猿人学WEB题目总计20题的解题思路与方法,如有讲述错误,请不吝赐教。

想看往期历史文章,可以浏览此博文: 历史文章目录,后续所有文章发布都会同步更新此博文~

人生苦短,我用python

题目网址

猿人学第18题

题目详情

在这里插入图片描述
让我们计算 加和

题目思路

我们像往常一样找入口函数,在这题面前却显得不一样:
在这里插入图片描述
这题用了原始的 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 (
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值