打开就是 俩个无线debugg,正常的操作过掉
1. 找到 debugg 对应的行数,右击选择 never pause here ,刷新 就不会再此处 停下了
虽然 这样过掉了,但是你会 发现 特别异常的卡,(我怀疑浏览器卡关闭重开,电脑卡了重启发现还是一样的),
这样根本不好调试 代码,就无法找到 js 的逻辑,(后来发现 虽然用 never pause here过了,但这不是真真的跳过debug了,只是在 debug处 不暂停而已,JS代码还是在无线执行消耗内存卡的吧,卡的导致无法调试)
以下俩种解决思路:
1.1 中间人攻击 fiddler 自己返回 数据
1.2 浏览器的 Override 工具(这里可以查阅资料看看,有时间我补一篇博客)
先做个测试 对比一下数据:
2.1 fiddler 修改后返回的数据 (这里我已经修改 代码了)
2.2 正常请求返回的数据
可以看到俩个数据是一样的,我改后的html代码没有页数了,这里页数这里不用关注,因为我我们只要看到数据对应上就OK了。
看到源码的有大堆 JS 看不懂东西,ob混淆
(这里我也不知道怎么区别是不是 ob混淆的,目前只知道这种,看不懂的JS丢进去就好了,补充博客)
ob解混淆后来看下对比,这代码好看程度大大提升,容易看懂很多
后面我就直接看 解混淆后的代码了,可以看到很多的方法,但是都是 定义JS方法,我们需要找到 函数执行的地方
1. 函数自执行函数
2. 等待 函数执行
3. (function(){ })(window) 也是 自执行函数
这一题 就这俩个地方,JS的只执行函数的方式很多,花里胡哨的有些可以看不懂。
然后 把 ajax 请求 返回 success 成功后面 { } 大括号里面 的代码 全部 换成 解混淆后的代码
在 用浏览器 请求,返回 fiddler 自定义修改后 数据(就是更换 解混淆JS的Html),请求还是会断在 无线debug 那里
但是我们 找出了,自执行函数的位置,就提前打断点,在自执行函数 里面 申明的JS方法,然后又自己执行,我们就在这里先打断点
调试 下一个断点 就出现了,开始的那俩个 无线debug ,一直在有个方法里死循环(自己调用自己)
我们可以直接 重写这个 方法的上一个 栈方法 无线死循环的是 _0x1e51f8 我们重写 _0xde23e 函数
(这俩个函数是我静态保存的,每次请求是不一样的,你们要找到你们保存数据的方法)
再次 刷新请求 ,除了断在自己打的断点上,无线debug已经没有了。
你会惊奇的发现,前面提到的 setInterval 定时里面也有这个函数 _0xde23e ,但是重写了就失效了
这里有个小问题,感觉上 setInterval的定时函数没有起到作用,我做测试的时候 在重写 _0xde23e 方法的上一层函数 _0x18be96,不重写 _0xde23e 函数,自执行函数的无线debug会过掉,但是 定时函数的_0xde23e方法的无线debug方法没有过掉,但是还是没有出现。
继续分析,
厉害的人 可能会直接略过前面的步骤,直接看到 下面这部分代码就知道了,ajax 请求成功后,获取数据,然后通过JS添加到前端显示。
但是 这里有个主意的点,通过JS方法把一些多余干扰的图片隐藏了,不然会把干扰的数据也获取到。
把返回的 info 是HTML字符串,自己新建一个 HTML 可以打开看看
先 测试 一下,把 JS隐藏样式的代码注释掉,把 要隐藏的class打印在控制台查看,
同时 在这里 把 图片的base64编码的字符串 和 对应的 数字,纯手工 copy 到代码的 字典里吧,后面根据 图片找到 对应的 数值
进一步 解析 隐藏class 的由来,主要有个 btoa 是个win自带的base64编码,js逆向加密中Base64方法替换
然后 其他的 就是 慢慢扣JS了,缺什么补什么,
var _0x20c24d = "." + _0x124e6b(btoa(data["key"] + data["value"])["replace"](/=/g, ""));
扣完请求后,模拟请求 ,发现 数据还是不对,数值的位置不对,这里用偏移了,这里植入 css 的知识
position :相对定位,当前元素 和 上一个元素的位置 关系
这里看到 img-number 的宽度是 9px 像素,数值框的 宽度是 69px 像素,(有些可能会遇到偏移出去了)
偏移量 [ 0 , 9 . -9 , 0 ]
数字 [ 1 , 6 1 7 ]
第一个偏移量 0 : 是第一个元素,偏移量还是0,那就是第一个值了
第二个偏移量 9∶ 正常第二个元素对应第一个元素的位置关系为 0,加9的偏移量,那就是是第三个位置了
第三个偏移量 -9∶ 第三个元素 对应 第二个元素的位置为 0 ,偏移量是 -9 就是往往前面移动,那就是第二个位置了
第四个偏移量 0∶ 没有偏移,那就是第四个位置设有变化
这里 总结一下,四个元素 产生偏移量时,想要四个值都在 他们的 偏移求和 肯定等于 0,如果不等于 那就是 偏移到 外面的框或重叠了。
# 偏移量 逻辑
a = [0.0, 1.0, -1.0, 0.0]
b = [1, 6, 1, 7]
tem = b.copy()
for index,aa in enumerate(a):
if aa:
if aa>0:
b[index+1] = tem[index]
else:
b[index-1] = tem[index]
print(b)
# [1, 6, 6, 7] 这就是 需要的结果 1167
得到 正确的 数据,下面开始撸代码
var encode_version = "sojson.v5",
ubbgr = "__0x8c0ec";
var _0x8f754e = 0;
var _0x130c55 = "";
var _0x690c11 = 8;
function _0x4a5ee7(_0x540928, _0x1c68c7, _0x55fb3a, _0xc73c5d, _0x32e9c6, _0x3a61fb, _0x1c075e) {
return _0x4efd4f(_0x55fb3a ^ (_0x1c68c7 | ~_0xc73c5d), _0x540928, _0x1c68c7, _0x32e9c6, _0x3a61fb, _0x1c075e);
}
function _0x5284de(_0x15415d, _0x4be6fe, _0x245ee5, _0x438931, _0x452339, _0x1f7c91, _0x4ef10f) {
return _0x4efd4f(_0x4be6fe ^ _0x245ee5 ^ _0x438931, _0x15415d, _0x4be6fe, _0x452339, _0x1f7c91, _0x4ef10f);
}
function _0x1a3ade(_0x5d7666, _0x36a29d, _0x3b74c1, _0x480b22, _0x30475b, _0x1dd9e9, _0x636b5) {
return _0x4efd4f(_0x36a29d & _0x480b22 | _0x3b74c1 & ~_0x480b22, _0x5d7666, _0x36a29d, _0x30475b, _0x1dd9e9, _0x636b5);
}
function _0x1cb164(_0x16b706, _0xbd8b87) {
return _0x16b706 << _0xbd8b87 | _0x16b706 >>> 32 - _0xbd8b87;
}
function _0x50651a(_0x7b44fe, _0x498d2c) {
var _0x2b4226 = (_0x7b44fe & 65535) + (_0x498d2c & 65535);
var _0x208fba = (_0x7b44fe >> 16) + (_0x498d2c >> 16) + (_0x2b4226 >> 16);
return _0x208fba << 16 | _0x2b4226 & 65535;
}
function _0x4efd4f(_0x29aa42, _0x422c7a, _0x2dfb85, _0x367f62, _0x591028, _0x6038d7) {
return _0x50651a(_0x1cb164(_0x50651a(_0x50651a(_0x422c7a, _0x29aa42), _0x50651a(_0x367f62, _0x6038d7)), _0x591028), _0x2dfb85);
}
function _0x56e427(_0x28552e, _0x519e35, _0x2d221d, _0x265f8e, _0x2baabe, _0x6a5908, _0xa03ce0) {
return _0x4efd4f(_0x519e35 & _0x2d221d | ~_0x519e35 & _0x265f8e, _0x28552e, _0x519e35, _0x2baabe, _0x6a5908, _0xa03ce0);
}
function _0x2755cc(_0x3af3a2) {
var _0x5150ad = Array();
var _0x536650 = 255;
for (var _0x57f6ed = 0; _0x57f6ed < _0x3af3a2["length"] * _0x690c11; _0x57f6ed += _0x690c11) _0x5150ad[_0x57f6ed >> 5] |= (_0x3af3a2["charCodeAt"](_0x57f6ed / _0x690c11) & _0x536650) << _0x57f6ed % 32;
return _0x5150ad;
}
function _0x5f2dd4(_0x8dce70, _0x16e827) {
_0x8dce70[_0x16e827 >> 5] |= 128 << _0x16e827 % 32;
_0x8dce70[(_0x16e827 + 64 >>> 9 << 4) + 14] = _0x16e827;
var _0x4351a3 = 1732584193;
var _0x245564 = -271733879;
var _0x80a9d = -1732584194;
var _0x3c2f7b = 271733878;
for (var _0x2bfaa7 = 0; _0x2bfaa7 < _0x8dce70["length"]; _0x2bfaa7 += 16) {
var _0x308fc9 = _0x4351a3;
var _0x5432b0 = _0x245564;
var _0xb174aa = _0x80a9d;
var _0x227f98 = _0x3c2f7b;
_0x4351a3 = _0x56e427(_0x4351a3, _0x245564, _0x80a9d, _0x3c2f7b, _0x8dce70[_0x2bfaa7 + 0], 7, -680876936);
_0x3c2f7b = _0x56e427(_0x3c2f7b, _0x4351a3, _0x245564, _0x80a9d, _0x8dce70[_0x2bfaa7 + 1], 12, -389564586);
_0x80a9d = _0x56e427(_0x80a9d, _0x3c2f7b, _0x4351a3, _0x245564, _0x8dce70[_0x2bfaa7 + 2], 17, 606105819);
_0x245564 = _0x56e427(_0x245564, _0x80a9d, _0x3c2f7b, _0x4351a3, _0x8dce70[_0x2bfaa7 + 3], 22, -1044525330);
_0x4351a3 = _0x56e427(_0x4351a3, _0x245564, _0x80a9d, _0x3c2f7b, _0x8dce70[_0x2bfaa7 + 4], 7, -176418897);
_0x3c2f7b = _0x56e427(_0x3c2f7b, _0x4351a3, _0x245564, _0x80a9d, _0x8dce70[_0x2bfaa7 + 5], 12, 1200080426);
_0x80a9d = _0x56e427(_0x80a9d, _0x3c2f7b, _0x4351a3, _0x245564, _0x8dce70[_0x2bfaa7 + 6], 17, -1473231341);
_0x245564 = _0x56e427(_0x245564, _0x80a9d, _0x3c2f7b, _0x4351a3, _0x8dce70[_0x2bfaa7 + 7], 22, -45705983);
_0x4351a3 = _0x56e427(_0x4351a3, _0x245564, _0x80a9d, _0x3c2f7b, _0x8dce70[_0x2bfaa7 + 8], 7, 1770035416);
_0x3c2f7b = _0x56e427(_0x3c2f7b, _0x4351a3, _0x245564, _0x80a9d, _0x8dce70[_0x2bfaa7 + 9], 12, -1958414417);
_0x80a9d = _0x56e427(_0x80a9d, _0x3c2f7b, _0x4351a3, _0x245564, _0x8dce70[_0x2bfaa7 + 10], 17, -42063);
_0x245564 = _0x56e427(_0x245564, _0x80a9d, _0x3c2f7b, _0x4351a3, _0x8dce70[_0x2bfaa7 + 11], 22, -1990404162);
_0x4351a3 = _0x56e427(_0x4351a3, _0x245564, _0x80a9d, _0x3c2f7b, _0x8dce70[_0x2bfaa7 + 12], 7, 1804603682);
_0x3c2f7b = _0x56e427(_0x3c2f7b, _0x4351a3, _0x245564, _0x80a9d, _0x8dce70[_0x2bfaa7 + 13], 12, -40341101);
_0x80a9d = _0x56e427(_0x80a9d, _0x3c2f7b, _0x4351a3, _0x245564, _0x8dce70[_0x2bfaa7 + 14], 17, -1502002290);
_0x245564 = _0x56e427(_0x245564, _0x80a9d, _0x3c2f7b, _0x4351a3, _0x8dce70[_0x2bfaa7 + 15], 22, 1236535329);
_0x4351a3 = _0x1a3ade(_0x4351a3, _0x245564, _0x80a9d, _0x3c2f7b, _0x8dce70[_0x2bfaa7 + 1], 5, -165796510);
_0x3c2f7b = _0x1a3ade(_0x3c2f7b, _0x4351a3, _0x245564, _0x80a9d, _0x8dce70[_0x2bfaa7 + 6], 9, -1069501632);
_0x80a9d = _0x1a3ade(_0x80a9d, _0x3c2f7b, _0x4351a3, _0x245564, _0x8dce70[_0x2bfaa7 + 11], 14, 643717713);
_0x245564 = _0x1a3ade(_0x245564, _0x80a9d, _0x3c2f7b, _0x4351a3, _0x8dce70[_0x2bfaa7 + 0], 20, -373897302);
_0x4351a3 = _0x1a3ade(_0x4351a3, _0x245564, _0x80a9d, _0x3c2f7b, _0x8dce70[_0x2bfaa7 + 5], 5, -701558691);
_0x3c2f7b = _0x1a3ade(_0x3c2f7b, _0x4351a3, _0x245564, _0x80a9d, _0x8dce70[_0x2bfaa7 + 10], 9, 38016083);
_0x80a9d = _0x1a3ade(_0x80a9d, _0x3c2f7b, _0x4351a3, _0x245564, _0x8dce70[_0x2bfaa7 + 15], 14, -660478335);
_0x245564 = _0x1a3ade(_0x245564, _0x80a9d, _0x3c2f7b, _0x4351a3, _0x8dce70[_0x2bfaa7 + 4], 20, -405537848);
_0x4351a3 = _0x1a3ade(_0x4351a3, _0x245564, _0x80a9d, _0x3c2f7b, _0x8dce70[_0x2bfaa7 + 9], 5, 568446438);
_0x3c2f7b = _0x1a3ade(_0x3c2f7b, _0x4351a3, _0x245564, _0x80a9d, _0x8dce70[_0x2bfaa7 + 14], 9, -1019803690);
_0x80a9d = _0x1a3ade(_0x80a9d, _0x3c2f7b, _0x4351a3, _0x245564, _0x8dce70[_0x2bfaa7 + 3], 14, -187363961);
_0x245564 = _0x1a3ade(_0x245564, _0x80a9d, _0x3c2f7b, _0x4351a3, _0x8dce70[_0x2bfaa7 + 8], 20, 1163531501);
_0x4351a3 = _0x1a3ade(_0x4351a3, _0x245564, _0x80a9d, _0x3c2f7b, _0x8dce70[_0x2bfaa7 + 13], 5, -1444681467);
_0x3c2f7b = _0x1a3ade(_0x3c2f7b, _0x4351a3, _0x245564, _0x80a9d, _0x8dce70[_0x2bfaa7 + 2], 9, -51403784);
_0x80a9d = _0x1a3ade(_0x80a9d, _0x3c2f7b, _0x4351a3, _0x245564, _0x8dce70[_0x2bfaa7 + 7], 14, 1735328473);
_0x245564 = _0x1a3ade(_0x245564, _0x80a9d, _0x3c2f7b, _0x4351a3, _0x8dce70[_0x2bfaa7 + 12], 20, -1926607734);
_0x4351a3 = _0x5284de(_0x4351a3, _0x245564, _0x80a9d, _0x3c2f7b, _0x8dce70[_0x2bfaa7 + 5], 4, -378558);
_0x3c2f7b = _0x5284de(_0x3c2f7b, _0x4351a3, _0x245564, _0x80a9d, _0x8dce70[_0x2bfaa7 + 8], 11, -2022574463);
_0x80a9d = _0x5284de(_0x80a9d, _0x3c2f7b, _0x4351a3, _0x245564, _0x8dce70[_0x2bfaa7 + 11], 16, 1839030562);
_0x245564 = _0x5284de(_0x245564, _0x80a9d, _0x3c2f7b, _0x4351a3, _0x8dce70[_0x2bfaa7 + 14], 23, -35309556);
_0x4351a3 = _0x5284de(_0x4351a3, _0x245564, _0x80a9d, _0x3c2f7b, _0x8dce70[_0x2bfaa7 + 1], 4, -1530992060);
_0x3c2f7b = _0x5284de(_0x3c2f7b, _0x4351a3, _0x245564, _0x80a9d, _0x8dce70[_0x2bfaa7 + 4], 11, 1272893353);
_0x80a9d = _0x5284de(_0x80a9d, _0x3c2f7b, _0x4351a3, _0x245564, _0x8dce70[_0x2bfaa7 + 7], 16, -155497632);
_0x245564 = _0x5284de(_0x245564, _0x80a9d, _0x3c2f7b, _0x4351a3, _0x8dce70[_0x2bfaa7 + 10], 23, -1094730640);
_0x4351a3 = _0x5284de(_0x4351a3, _0x245564, _0x80a9d, _0x3c2f7b, _0x8dce70[_0x2bfaa7 + 13], 4, 681279174);
_0x3c2f7b = _0x5284de(_0x3c2f7b, _0x4351a3, _0x245564, _0x80a9d, _0x8dce70[_0x2bfaa7 + 0], 11, -358537222);
_0x80a9d = _0x5284de(_0x80a9d, _0x3c2f7b, _0x4351a3, _0x245564, _0x8dce70[_0x2bfaa7 + 3], 16, -722521979);
_0x245564 = _0x5284de(_0x245564, _0x80a9d, _0x3c2f7b, _0x4351a3, _0x8dce70[_0x2bfaa7 + 6], 23, 76029189);
_0x4351a3 = _0x5284de(_0x4351a3, _0x245564, _0x80a9d, _0x3c2f7b, _0x8dce70[_0x2bfaa7 + 9], 4, -640364487);
_0x3c2f7b = _0x5284de(_0x3c2f7b, _0x4351a3, _0x245564, _0x80a9d, _0x8dce70[_0x2bfaa7 + 12], 11, -421815835);
_0x80a9d = _0x5284de(_0x80a9d, _0x3c2f7b, _0x4351a3, _0x245564, _0x8dce70[_0x2bfaa7 + 15], 16, 530742520);
_0x245564 = _0x5284de(_0x245564, _0x80a9d, _0x3c2f7b, _0x4351a3, _0x8dce70[_0x2bfaa7 + 2], 23, -995338651);
_0x4351a3 = _0x4a5ee7(_0x4351a3, _0x245564, _0x80a9d, _0x3c2f7b, _0x8dce70[_0x2bfaa7 + 0], 6, -198630844);
_0x3c2f7b = _0x4a5ee7(_0x3c2f7b, _0x4351a3, _0x245564, _0x80a9d, _0x8dce70[_0x2bfaa7 + 7], 10, 1126891415);
_0x80a9d = _0x4a5ee7(_0x80a9d, _0x3c2f7b, _0x4351a3, _0x245564, _0x8dce70[_0x2bfaa7 + 14], 15, -1416354905);
_0x245564 = _0x4a5ee7(_0x245564, _0x80a9d, _0x3c2f7b, _0x4351a3, _0x8dce70[_0x2bfaa7 + 5], 21, -57434055);
_0x4351a3 = _0x4a5ee7(_0x4351a3, _0x245564, _0x80a9d, _0x3c2f7b, _0x8dce70[_0x2bfaa7 + 12], 6, 1700485571);
_0x3c2f7b = _0x4a5ee7(_0x3c2f7b, _0x4351a3, _0x245564, _0x80a9d, _0x8dce70[_0x2bfaa7 + 3], 10, -1894986606);
_0x80a9d = _0x4a5ee7(_0x80a9d, _0x3c2f7b, _0x4351a3, _0x245564, _0x8dce70[_0x2bfaa7 + 10], 15, -1051523);
_0x245564 = _0x4a5ee7(_0x245564, _0x80a9d, _0x3c2f7b, _0x4351a3, _0x8dce70[_0x2bfaa7 + 1], 21, -2054922799);
_0x4351a3 = _0x4a5ee7(_0x4351a3, _0x245564, _0x80a9d, _0x3c2f7b, _0x8dce70[_0x2bfaa7 + 8], 6, 1873313359);
_0x3c2f7b = _0x4a5ee7(_0x3c2f7b, _0x4351a3, _0x245564, _0x80a9d, _0x8dce70[_0x2bfaa7 + 15], 10, -30611744);
_0x80a9d = _0x4a5ee7(_0x80a9d, _0x3c2f7b, _0x4351a3, _0x245564, _0x8dce70[_0x2bfaa7 + 6], 15, -1560198380);
_0x245564 = _0x4a5ee7(_0x245564, _0x80a9d, _0x3c2f7b, _0x4351a3, _0x8dce70[_0x2bfaa7 + 13], 21, 1309151649);
_0x4351a3 = _0x4a5ee7(_0x4351a3, _0x245564, _0x80a9d, _0x3c2f7b, _0x8dce70[_0x2bfaa7 + 4], 6, -145523070);
_0x3c2f7b = _0x4a5ee7(_0x3c2f7b, _0x4351a3, _0x245564, _0x80a9d, _0x8dce70[_0x2bfaa7 + 11], 10, -1120210379);
_0x80a9d = _0x4a5ee7(_0x80a9d, _0x3c2f7b, _0x4351a3, _0x245564, _0x8dce70[_0x2bfaa7 + 2], 15, 718787259);
_0x245564 = _0x4a5ee7(_0x245564, _0x80a9d, _0x3c2f7b, _0x4351a3, _0x8dce70[_0x2bfaa7 + 9], 21, -343485551);
_0x4351a3 = _0x50651a(_0x4351a3, _0x308fc9);
_0x245564 = _0x50651a(_0x245564, _0x5432b0);
_0x80a9d = _0x50651a(_0x80a9d, _0xb174aa);
_0x3c2f7b = _0x50651a(_0x3c2f7b, _0x227f98);
}
return Array(_0x4351a3, _0x245564, _0x80a9d, _0x3c2f7b);
}
function _0x397d65(_0x41002e) {
var _0x2c5f6d = "0123456789abcdef";
var _0x389ccd = "";
for (var _0x2101be = 0; _0x2101be < _0x41002e["length"] * 4; _0x2101be++) {
_0x389ccd += _0x2c5f6d["charAt"](_0x41002e[_0x2101be >> 2] >> _0x2101be % 4 * 8 + 4 & 15) + _0x2c5f6d["charAt"](_0x41002e[_0x2101be >> 2] >> _0x2101be % 4 * 8 & 15);
}
return _0x389ccd;
}
function _0x124e6b(_0x280199) {
return _0x397d65(_0x5f2dd4(_0x2755cc(_0x280199), _0x280199["length"] * _0x690c11));
}
var Base64 = {
// private property
_keyStr: "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="
// public method for encoding
, encode: function (input)
{
var output = "";
var chr1, chr2, chr3, enc1, enc2, enc3, enc4;
var i = 0;
input = Base64._utf8_encode(input);
while (i < input.length)
{
chr1 = input.charCodeAt(i++);
chr2 = input.charCodeAt(i++);
chr3 = input.charCodeAt(i++);
enc1 = chr1 >> 2;
enc2 = ((chr1 & 3) << 4) | (chr2 >> 4);
enc3 = ((chr2 & 15) << 2) | (chr3 >> 6);
enc4 = chr3 & 63;
if (isNaN(chr2))
{
enc3 = enc4 = 64;
}
else if (isNaN(chr3))
{
enc4 = 64;
}
output = output +
this._keyStr.charAt(enc1) + this._keyStr.charAt(enc2) +
this._keyStr.charAt(enc3) + this._keyStr.charAt(enc4);
} // Whend
return output;
} // End Function encode
// public method for decoding
,decode: function (input)
{
var output = "";
var chr1, chr2, chr3;
var enc1, enc2, enc3, enc4;
var i = 0;
input = input.replace(/[^A-Za-z0-9\+\/\=]/g, "");
while (i < input.length)
{
enc1 = this._keyStr.indexOf(input.charAt(i++));
enc2 = this._keyStr.indexOf(input.charAt(i++));
enc3 = this._keyStr.indexOf(input.charAt(i++));
enc4 = this._keyStr.indexOf(input.charAt(i++));
chr1 = (enc1 << 2) | (enc2 >> 4);
chr2 = ((enc2 & 15) << 4) | (enc3 >> 2);
chr3 = ((enc3 & 3) << 6) | enc4;
output = output + String.fromCharCode(chr1);
if (enc3 != 64)
{
output = output + String.fromCharCode(chr2);
}
if (enc4 != 64)
{
output = output + String.fromCharCode(chr3);
}
} // Whend
output = Base64._utf8_decode(output);
return output;
} // End Function decode
// private method for UTF-8 encoding
,_utf8_encode: function (string)
{
var utftext = "";
string = String(string).replace(/\r\n/g, "\n");
for (var n = 0; n < string.length; n++)
{
var c = string.charCodeAt(n);
if (c < 128)
{
utftext += String.fromCharCode(c);
}
else if ((c > 127) && (c < 2048))
{
utftext += String.fromCharCode((c >> 6) | 192);
utftext += String.fromCharCode((c & 63) | 128);
}
else
{
utftext += String.fromCharCode((c >> 12) | 224);
utftext += String.fromCharCode(((c >> 6) & 63) | 128);
utftext += String.fromCharCode((c & 63) | 128);
}
} // Next n
return utftext;
} // End Function _utf8_encode
// private method for UTF-8 decoding
,_utf8_decode: function (utftext)
{
var string = "";
var i = 0;
var c, c1, c2, c3;
c = c1 = c2 = 0;
while (i < utftext.length)
{
c = utftext.charCodeAt(i);
if (c < 128)
{
string += String.fromCharCode(c);
i++;
}
else if ((c > 191) && (c < 224))
{
c2 = utftext.charCodeAt(i + 1);
string += String.fromCharCode(((c & 31) << 6) | (c2 & 63));
i += 2;
}
else
{
c2 = utftext.charCodeAt(i + 1);
c3 = utftext.charCodeAt(i + 2);
string += String.fromCharCode(((c & 15) << 12) | ((c2 & 63) << 6) | (c3 & 63));
i += 3;
}
} // Whend
return string;
} // End Function _utf8_decode
};
function get_class(data) {
// var class_name = _0x124e6b(btoa(data["key"] + data["value"])["replace"](/=/g, ""));
var class_name = _0x124e6b(Base64.encode(data["key"] + data["value"])["replace"](/=/g, ""));
// btoa
// var s = new Buffer.from(data["key"] + data["value"], "binary").toString("base64")
// console.log(s)
// var class_name = _0x124e6b(s["replace"](/=/g, ""));
console.log('class_name -->>',class_name)
return class_name
}
data = {'status': '1', 'state': 'success', 'key': '1NrwivKFu3', 'value': 'w8125c9xlj', 'IV': 'qliuz', 'info': '















































































'}
get_class(data)
# -*- encoding=utf-8 -*-
from operator import itemgetter
import requests
from parsel import Selector
import execjs
import re
cookies = {
'Hm_lvt_337e99a01a907a08d00bed4a1a52e35d': '1608776277,1609252702,1609295123,1609308428',
'sessionid': '8iaw2emkx9fedvjvq8sntsa7f986uy0n',
'no-alert': 'true',
'Hm_lpvt_337e99a01a907a08d00bed4a1a52e35d': '1609308998',
}
headers = {
'Connection': 'keep-alive',
'Pragma': 'no-cache',
'Cache-Control': 'no-cache',
'Accept': 'application/json, text/javascript, */*; q=0.01',
'X-Requested-With': 'XMLHttpRequest',
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.111 Safari/537.36',
'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8',
'Origin': 'http://www.python-spider.com',
'Referer': 'http://www.python-spider.com/challenge/19',
'Accept-Language': 'zh-CN,zh;q=0.9',
}
img_dict = {
"iVBORw0KGgoAAAANSUhEUgAAABoAAAAjCAMAAAC94eqZAAAAAXNSR0IArs4c6QAAAN5QTFRF+fv9od/9+fvb6axkUAAA2fv9+frlAAAAAABQ+d+jAEedFFuhbgAAFgAAyY0wAABC7fv9AB48Vqblq14Au/D9AAAamdn9PFxv8bdyfsT9aLHw+fHF+fO7ABhyAHrF+fv1fjAA+fvISJ3biYl6+cWD+eO7AACDaEwoiVQgQCoYmUQAIGCrQBgAAABqwYE4yaub+dmbcKPToVQAoVwY+fvt0aNysWo4kaPFQAAA4fP94adYgQAAcGBAiS4AFkyDNoHFeImL+euzIHa7ueP9AC6DUKHbcImLKEBiAIHFyef90jE/4QAAAQNJREFUKM9jYIADNn0bTXZ2QXFzSwZUIG+qww4FgoYCyDJMZuxIQJsVSY8eSERU3EFZnRfEckLokwAJcHuCmKoaIEVSMBlFW5AM1BQmYyDHRQQqxQzkyMI4DNIKQC5UG5sRkK2EsBmkkgtiBicLOzu/GEJKhgfOl0CogpgiDBQQAjP5gCw5ZF/CBcCKXJGlrEDGgF2rhXARBKgABdTAvrIGsiSRpQws2Nl10RwEBSAnc8AZjAMuBXIhDik8/gKHhiTW0DBBBDRSGHLDA9oDa8jjiy901zsiAhVP2sCWopSQOSjpEKGQGZR67ZwRqVcIPc27u0HTvL0AMTkFGCQ48xeWXAkAP2Ubepd6ecoAAAAASUVORK5CYII=": 0,
"iVBORw0KGgoAAAANSUhEUgAAABoAAAAjCAMAAAC94eqZAAAAAXNSR0IArs4c6QAAAF1QTFRFAAAAoVQAPAkAxYQ8+cWD+fvnGQAA+fv9AFSj4fv97fv9+eaz8cmHYJ3TgavTueP9ibvlIFSLFhgYACRQoXJIIGCjAAAg+evT6bd6qWRYcEAYcBgA2aNY2buD+fv1QCX7aQAAAGBJREFUKM/ty0kOgCAUA9CvCCg4z/P9j2lgYWLoTzwA3bUvJc2GPs0elBeQbkEcnYqjMiWGvEBavQCSQhEmu7u5D2kZ/WW6ApKJg7kyGaau0RrS0LoCaKuNxvQmUqR/9ACWThad7ZHt3QAAAABJRU5ErkJggg==": 1,
"iVBORw0KGgoAAAANSUhEUgAAABoAAAAjCAMAAAC94eqZAAAAAXNSR0IArs4c6QAAARdQTFRF+fv92fv9NAAA+fv1+fvlAAAYAIHFAAAA8fv9FgAAAAA6oVQA+e3Fmdn9od79+fvN8bp3AABKACA6ABhY+fvbNnC3FlyfhUYY+eWrVJ3Xqd/9aK/bbFo8DDuDuXQNcLf1QIXFACRinVwYxYk8fTYA+c2Lwe39Fna7iS4ASERAYDANXB4AIAAA+fvt+d2j+fvFWKXggcPxAEib+e/QgRgAcJ2r2aNYiTYA0e/9gQAA6cGDsWo4wYE4KBhQKBgAqVwA+d2zmYmL2ZlIAABiiYmLSBgAyd/1qef9+ee7UGZ6wYEA6fv9kcXlueP9mXpqMI3NQERiiYl6IFSLWAAAuYlQ6dWzSI3N2a9qYAAAyY1I6cGL8c2LYKvt2JmUjQAAAR1JREFUKM910mlbwjAMAOAhg3KfgqKgXCqIiAh4AIrgCXgrKOL//x0mkY7uWZZPXd+maddo2iKck+fypRCx19adZo6ffWHE+5MC1YJXKOHbNMTZpZnY8OYtfUBWlxTBnNwjjfVPxPjGv4RP4SOzKxe2V+Bzz2MkRYPLygOg63uqtLVcRbH+DRPbtF9Jjhah+2EiRYs+YL+QeskRkBsHgX66fKGS3gN60bioNYGOWMIT+4Kc0CmOHRyd4L/55eSwYpd0ha8T5SoFiiAu7ngPJFmPTR1W5rcoU0a+8KFcKatUZ15zWxix2qH2qFulkUfJhZjrrAlTfyg5JMkzpg7tluD+W4FkzMgO3ifpsHs62a5MkiXcskN5og7lqXZuQ38KGhzS8FaWQgAAAABJRU5ErkJggg==": 2,
"iVBORw0KGgoAAAANSUhEUgAAABoAAAAjCAMAAAC94eqZAAAAAXNSR0IArs4c6QAAAWJQTFRF+fv96fv9mdn9+euz+fvt3aJQ+fvbAAAA+fv12fv9IAAA+fvIXabbvOH4rOn9iYmL9MWAwfv9AABlMAAAAAA4hMn9NgAAgQAA8d+7odHtQDAcuXINwYEYaHqLG1ajiVAcaK/t+c2Lve39+fPp+e/JAAAgADaDSA0AACRMFkyHpV4NAAAYTKDgoVQAXB4AAC6HaAAAwfH9iXZmIDZQFgAAAABEAACDeGZQDGaz4cWTAEByiYl6yev9+d+jUCQAIEhymUQA4dW7cKPTgUAYuYlQABiD+d2jmUgAMInNmYmLABhYgcX1QERi+fO7+evTQEQ4ABhy6cGDcJGj6cGLAHK76atiyfv9wYE4ADZqAGCrqZ2LaCpAaFQ48fv9mWAgcAAA4cWj2cW7UGZ6sWYA0aNyUDYgNo3NyY1IiWZQ0Z1IoYFQ+fvlAEibicHtIFSLqd/9ABgosdX1iS4AAESbQDZQaK/blFkJ4AAAAU5JREFUKM+Fk2VDAkEQhomTAUUBBQUMDKQUEQsbu7u7u/P/O3t7t7ssq86nmXvu3smzWP4359ldGOBtaaNcJpujYNpLAXTe9gA3/7eA7nXSXe/pChOnzc2ItxrjvZDuD3Sgv/BqEMcsRrGsEc0QNmcETVWoH2Aa24imfdSvQ3/fypC9E6DXRvXGEDXymspqMKYizvOD3JeNo+VTrDGgnAtJXVmhIo406vVbFWTlBFgVorWMP5QiaXXLs681Zph4lj95TFMy+F6kpvejWz4kIfvhhWfoiOQqTkYrmSLQv6hseZ2sKJNVshIoHKpYzweirWMlI1v6dP2q2Of7GwXnc6sNLhlldsg9gbQf7dJcC7kFaBfQSNx8oKXQW2vmu0xxGS9uHFg2bZd0fCMuKkn/gmCEBE/mi9FJMG/+WvdiXD4aAdGSw2K9V3EGEhP0nH4AdB0nRQhEwa4AAAAASUVORK5CYII=": 3,
"iVBORw0KGgoAAAANSUhEUgAAABoAAAAlCAMAAABruAmEAAAAAXNSR0IArs4c6QAAAIFQTFRF+fv9hcb9+fDH+fvzQERAAAAYABhYAAAAAIHF4aNQ98WD5Pv9Fl+uXRgAFgAAXaro+fvbNAAAtWwY2aJQyYk4eC4A+duf8bx2oVgNgTYAFlyj3aVY2fv9+cuPWKPbod39qd/9gXpQQCoYwYE4+d+rSAAA+eezsef9ACQ4ABhqmUgAvyuUPQAAAKVJREFUKM/V0skSgjAQRdGGiC2oiBM4ASo4/v8H2smCIbxUWe58q1RO1V010ffzt8wTKGrFLspiF93n7CCTw3SMXVSbHKJkxzy+QJJcUKwRpZI7nEJAJlcSIikFBSFKbzqHKHmbHKKN5BaEKF8yz6aI/L3kzgRINbkBRU3Opk7OIlW1OYuyTq5P+oReD0IUMZ73K+Wj3q7y+9QPb3AFofN6/5vafQB+Gg2W8rL+LAAAAABJRU5ErkJggg==": 4,
"iVBORw0KGgoAAAANSUhEUgAAABkAAAAlCAMAAACAj7KHAAAAAXNSR0IArs4c6QAAAS9QTFRF+fv9+d2h+fvt4fb9od/9AABQ+fv1AAAAAAAYGAAAcGBAADCI9Lt1wXwAsWYA+fnCdQAAACA6AAA9+erF+fvN98eDAEibUwAAiYmL8fv9gRgAQGByye39PwAAyd/1AABYWBgAFkyL6fv9DHK7ABgodLz5+eGryfv9NiQAVKHbRBgA3aRU+fnleLft7evtwe/9UCQA+fvbhTIAqeP9aK/tAAAgAABI8c2LmYmLaFRAqZ164cWjQFRqoVAAKBgAQHqz8d/NQDYg2ZlIuXIY4dXF6cGD+euzoVQAibvl4buLeImLaAAAeJ2rsWYYuXIA2fv9wZFiKFiLNlRq2Z1IWJHNQEQ4ueP9wauDQJnbAGqjyY0wIC56mdn9kaPFgcn9FmaziVgomUQAAFSjiWZQACRQopPdIwAAATlJREFUKM+Fk2dbwjAUhVtHb1pALXVUUVTEhQxxbwTFhXvv/f9/g8mlLenjzdN8SvI2NyfnnmpaxOjugfDo7PCIPqAicVCRZxVp6+KLSUpA7xDA6CJFpriA2DRFhICJQYrMcTJLAeMcgL2TAhZUAg4aQoCx+VMFsFNv7S3SZwI8Pcz7r8zeZmQBoTE+7JGE923Kda0ZnMZKCMrbYvF7hA8yjrHqRyZoTlBAc7hSYOiis2bdvZRagvQxjvrJDtc4SZIEO0yS8peKYCPpKCWiSbG4n5ZB/rBJRAjg8V8u/fu+JevRe3zPDScrr5K0M98DfSQckDg/wpbQ3j1hYZCQ1Zw4ctGMm7CQVfCq/KUpx7ou6sHy9Ylr7YhZshCUrufkZtsFSajzafr77Oo+7MjuxjrPgL11mo76Qf8AIxAgoP2MorAAAAAASUVORK5CYII=": 5,
"/9j/4AAQSkZJRgABAQEAYABgAAD/2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8UHRofHh0aHBwgJC4nICIsIxwcKDcpLDAxNDQ0Hyc5PTgyPC4zNDL/2wBDAQkJCQwLDBgNDRgyIRwhMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjL/wgARCAAkABkDASIAAhEBAxEB/8QAGQAAAgMBAAAAAAAAAAAAAAAABgcABAUD/8QAFgEBAQEAAAAAAAAAAAAAAAAAAQAC/9oADAMBAAIQAxAAAAHSoVr5cTrC3dZVbRADIQpirpi1xG5J3rkjn//EABsQAAIDAQEBAAAAAAAAAAAAAAIEAQMFAAYV/9oACAEBAAEFAtbQspKMA7Bz2mFNDq7a59CfoB5NtPQnqloZ34GBFwIz93n4LO2QdVOqT+tudZUF1c+fSk11qVa+/8QAGREAAgMBAAAAAAAAAAAAAAAAAAEQMTJB/9oACAEDAQE/AXcPQ7OR/8QAGREAAgMBAAAAAAAAAAAAAAAAAAEQMTJB/9oACAECAQE/AVULIsnY/8QAKhAAAQIEAgkFAAAAAAAAAAAAAQIDAAQREhATFCIxMjNBUZGhISNScsH/2gAIAQEABj8CRKy3Hc8Re/Nqzu9I0CaVeDuqOEw+8oBDQPqe0VblXFN/ImkZiEJzU7bk6wwcac3cxRI6xaAAOkMuM6qV0qB5wRO0q2vb+xmB9u37Qgt8FrngUOJCknkYr7gHQKixlASMP//EACIQAQABBAICAgMAAAAAAAAAAAERACExURBxYZFBgaHB0f/aAAgBAQABPyEOZ+QuhxHmg6KvMQXay0mbYMmNX08eMSoRFRKdN/5DSOAiAezXHpqmCsUUGSAFgoRJKwrsDgiNWHUD91hXZVBHeqiKsK7gzP28Zs7BUSvWn5Jrau4y9vH/2gAMAwEAAgADAAAAEMyXS4If/8QAHBEAAgICAwAAAAAAAAAAAAAAAAERMUFRIYGR/9oACAEDAQE/EJJlhcd5FEuKJtnui2NL0yFR/8QAHhEAAQQBBQAAAAAAAAAAAAAAAAERMUEhUWFxgZH/2gAIAQIBAT8QYxbXPVGWR5I00nkiffyigsn/xAAgEAEAAgAHAQEBAAAAAAAAAAABESEAEDFBUWGBcZGh/9oACAEBAAE/EE0QKhJADUmbdA9Dg5SuI/QVhSdSFJJgrQqHRrnJ4wIlUkG7bAWriAg6MHgH6mCLqgoNJaQrCNTtOQGOpSQB8LHmILxpHAAqMDLq0WSBslxy5DrusbvqRTnzAnVAz1CiunBT1kCCy6SQbxeRTZieHvp71MXTSYr8yn9YnwDNyvKWv3L/2Q==": 6,
"iVBORw0KGgoAAAANSUhEUgAAABkAAAAlCAMAAACAj7KHAAAAAXNSR0IArs4c6QAAAK5QTFRF+fv96fv9+fv1MozNgcX9ufP9TAAAAAAA+fvloVQAod39FgAAMwAASJ3bABh6AA1UAGOv+ffNwX4wfQAAaAAA+fHADHS7gTYAwYEN2ZtIue/9+fvF+dmb8fv98bx2AAByAAA0UKLgABhycLf1+euzAAAY4addFmaz+d+j9cmDwfP9mUQA+fvbic39AABI2fv9AC6DaK/tuXYYeBgAAESb4aNQgcX1yYkwWKPbiS4A4f6kdQAAALNJREFUKM+tk8cSgkAQRAdFV8GEATNiQjHn8P8/5oBHuw9UOddXHWa2VoROqWzQ2P8kdQcER64x4QOAuGLM8gVAp6teK+sX5JoKZgMgCRKvMwAe85I+K7wuKslLlvhRIqkiyUXBacNSkESeCmoFdJcrKSaRgoPDXr1hscpzIYeB+amZPwZk0WZmgYIJMpMea7bbKpkKiQn3iMQui7mr2e3ICsBt0j3hnb03qzZsfT9GFoLmA5nrDvr/6ZwVAAAAAElFTkSuQmCC": 7,
"iVBORw0KGgoAAAANSUhEUgAAABoAAAAlCAMAAABruAmEAAAAAXNSR0IArs4c6QAAAVBQTFRF+fv96fv9AAA1+d+jTQAA+frb2fv9AAAANAAAFgAA+fv1IAAAG16l4aNQw/v9+frtAAAawe79AABQic39iYmL5Pn9qWAA8ceDUGZ6ADaDAFKjFkBymUUAAEab8fv9eLv1AACDACQ4DHK7+cmDZKXXaAAAWEIwaDsc6dOvufP9tYlQUKLgM3zAJFyTDCdE8dWf+fnl6cGHoc3tcKPTwYE4WBgAdLfx9cF6wYEAod/9eRgAZK3t8bdyzfH9+dmbUCQAoVwY2aNYAIHF2ff9iYlyABhA+euzAC6L+fvN+fPlgcX1FoHF2a9qAC56oVQAiYl6IDZA4buL6a9q8d+7MI3NueP9+e+7uZVimcXlgVQgFkCDAAB6mXpqmcXbAABIgUwYmbPTmdn9aFQ4YHKLyaNqod39ABh6oWAg8ePTAAByuXYY2Z1IyY1IFmazADZqAEqese4bOQAAAWpJREFUKM+1UldbAjEQPEUJnHieCopiF1EUBFTAjgXsvffe2/9/dLPJJXt+92qedjOb3cnMGsZ/naGrRB1je9G7qj9AZpA5pzLuArcCjJzQskZaEemNhsviccjvICfTkFbHsc/hLcdGHOiTIxsyqV2A7CUpkw5IUl1O4XwNpAURrwzAo2Y1OLsD0JGIfVDWNKVJTQK0RKBnT2iNE5xRCI6WFM0PiDvVV2aDjN3cU04pKY8vD0mf4rsIhSx2HTGMt2HQmLU16sm5EtUwPUf1zZ4qgX/G3Gadk0ejxBXzK4hXj+FyAqMLZ5Y5wdOY6LPu4oFuaYtyPP3Gng0tvIyQ4l8RcnMJ7W7CCZXaRGEguLQo33pHOB60RyjUDx17LE9IGYiQ3/NVEaD3JIUO4GbVkqtBnJS/QVsw2iY2FAPqN0INtcyZvDZdangmuj3xQrV7uLC487sPXFxmx7U0r9RkVilQvvt6A+z0sbj7Bdh2KpzcpBFrAAAAAElFTkSuQmCC": 8,
"/9j/4AAQSkZJRgABAQEAYABgAAD/2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8UHRofHh0aHBwgJC4nICIsIxwcKDcpLDAxNDQ0Hyc5PTgyPC4zNDL/2wBDAQkJCQwLDBgNDRgyIRwhMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjL/wgARCAAkABoDASIAAhEBAxEB/8QAGQAAAwEBAQAAAAAAAAAAAAAAAAQHBgEF/8QAFgEBAQEAAAAAAAAAAAAAAAAAAAEC/9oADAMBAAIQAxAAAAF5VahGX1E9oVmH6/pYllWn9APImoS1VwNZ/8QAHhAAAQUAAgMAAAAAAAAAAAAAAwABAgQFBhESExX/2gAIAQEAAQUC1NMgTNn6/WbpTMVUW8+RrQl6uRLSpWAXIb05tYCdtNF05g1nk0Yhf6e+r1ENwVcDHt1qwqgl/8QAGBEAAwEBAAAAAAAAAAAAAAAAAAExEUH/2gAIAQMBAT8Bdw6Ojo4I/8QAGREAAwEBAQAAAAAAAAAAAAAAAAExETJB/9oACAECAQE/AVNPNFBcioz/xAAoEAACAAMFCAMAAAAAAAAAAAABAgADBBAREhMxFCEiI0FCUVIzobH/2gAIAQEABj8CFLSi+cdT4jM23meuI3Q1LVLhqF+7J5fUYrrJDrrw32CvowSe5RGBaNzO9QYp3qTzprBio7d9gppqqso6PGIkADrGcvwyetnNG9dGGsbM7vl3+Yy5K3D9s//EACIQAQACAQQCAgMAAAAAAAAAAAERIQAQMUFxUZFhsaHB0f/aAAgBAQABPyGmc6JtsB5wl83Tb+M6NFiv70IbLufcfWg1xbfyp9aTFHIJZ65HOFFWCfU4Wl4cFA0hT3JM2V+axoMpU0Gbpux029t6XdiVsDDcGgBkbzd8ry6f/9oADAMBAAIAAwAAABDAB0qIH//EABsRAAICAwEAAAAAAAAAAAAAAAABITERQZGB/9oACAEDAQE/EIPooGsMjoW+dNpQ/8QAHREAAgEEAwAAAAAAAAAAAAAAAAEhETFBkWFxgf/aAAgBAgEBPxBI5OROqdlohwLHusGMuP/EACEQAQACAQMFAQEAAAAAAAAAAAERITEAEEFRYXGBkaHh/9oACAEBAAE/EKQ8CW8gpWboI9TEwfMERf1HfRd5dkAyrAM1SWbEchQwgEe7tEzBLlKz8GwUWFZAhYWCkLM9zrr8u4ijxHvnS+oBqCFlwH9bdhHcmBFhZgIqrUf5njqFeNPACDGgk/tUdjZ8BMBRlJREeiOoiPYJ4ET80OA2VZ6g5dv/2Q==": 9
}
with open('./ob解混淆js/扣JS代码.js', encoding='utf-8') as f:
Str_code = f.read()
js = execjs.compile(Str_code)
def get_imgnum(Count,i):
data = {
'page': i
}
response = requests.post('http://www.python-spider.com/api/challenge19', headers=headers, cookies=cookies, data=data,
verify=False)
res_josn = response.json()
print('res_josn ',res_josn)
result = js.call('get_class', res_josn)
res_info = res_josn['info']
sel = Selector(text=res_info)
td_infos = sel.xpath('//td[@class="info"]')
print('td_infos ',len(td_infos),td_infos)
for td_info in td_infos:
# print(result)
# print('./img[@class!="%s"]/@src'%(result))
# Num_imgs = td_info.xpath('./img[@class!="%s"]/@src'%(result)).getall()
# Num_imgs_not = td_info.xpath('./img').getall()
Num_imgs = td_info.xpath('./img[not(contains(@class,"%s"))]' % (result)).getall()
# print('Num_imgs_not -->', result, len(Num_imgs_not))
# print('Num_imgs -->', len(Num_imgs))
left_nums = []
num_s = []
for Num_img in Num_imgs:
left_num = re.findall('(?<=style="left:).+?(?=px")', Num_img)[0]
img_num = re.findall('(?<=data:image/png;base64,).+?(?=")', Num_img)[0]
# print(img_num)
# print(left_num)
left_nums.append(int(left_num) / 9)
num_s.append(str(img_dict[img_num]))
print()
print()
print(len(left_nums), left_nums)
print(len(num_s), num_s)
tem = num_s.copy()
for index, left_num in enumerate(left_nums):
# 不为 0,才有 偏移量
if left_num:
if left_num > 0:
num_s[index + int(left_num)] = tem[index]
else:
num_s[index - abs(int(left_num))] = tem[index]
ImgN = int(''.join(num_s))
print('ImgN ',ImgN,type(ImgN))
Count += ImgN
return Count
Count = 0
for i in range(1,101):
Count = get_imgnum(Count,i)
print('Count -->>',Count)
总结 :
这一题俩个难点,
第一个无限debug:
无限debugg 通过fiddler修改返回的相应数据,
浏览器的 Overides 把请求的数据保存到 本地,相同的请求就会先去返回本地的文件
第二个就是 css 反爬 .css反爬,有俩个注意的点,
第一个是会隐藏一些多余的图片,通过JS方法获取class的值修改css样式,通过分析JS获取class的值,过滤掉隐藏的图片
第二个是通过 css的样式对图片进行偏移,扰乱正确的顺序,这里要分析偏移量的逻辑,还原正确的顺序就可以得到正确的数据了
[分享] 猿人学·爬虫逆向高阶课 https://j.youzan.com/2fCUDs ,可以私信交流学习