当前位置:   article > 正文

猿人学题库十九题——css加密-雪碧图/数据干扰等——地毯式采坑学习_猿人学css雪碧图

猿人学css雪碧图

猿人学题库十四题——css加密-雪碧图/数据干扰等

 

1.  首先 进入 浏览器的开发者工具,

打开就是 俩个无线debugg,正常的操作过掉

1.  找到 debugg 对应的行数,右击选择 never pause here ,刷新 就不会再此处 停下了

虽然 这样过掉了,但是你会 发现 特别异常的卡,(我怀疑浏览器卡关闭重开,电脑卡了重启发现还是一样的),

这样根本不好调试 代码,就无法找到 js 的逻辑,(后来发现 虽然用 never pause here过了,但这不是真真的跳过debug了,只是在 debug处 不暂停而已,JS代码还是在无线执行消耗内存卡的吧,卡的导致无法调试)

以下俩种解决思路:

1.1  中间人攻击 fiddler 自己返回 数据

1.2  浏览器的 Override 工具(这里可以查阅资料看看,有时间我补一篇博客)

2.  中间人攻击 fiddler

先做个测试 对比一下数据:

2.1  fiddler 修改后返回的数据  (这里我已经修改 代码了

2.2  正常请求返回的数据 

可以看到俩个数据是一样的,我改后的html代码没有页数了,这里页数这里不用关注,因为我我们只要看到数据对应上就OK了。

3.  分析 JS 

看到源码的有大堆 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,如果不等于 那就是 偏移到 外面的框或重叠了。

  1. # 偏移量 逻辑
  2. a = [0.0, 1.0, -1.0, 0.0]
  3. b = [1, 6, 1, 7]
  4. tem = b.copy()
  5. for index,aa in enumerate(a):
  6. if aa:
  7. if aa>0:
  8. b[index+1] = tem[index]
  9. else:
  10. b[index-1] = tem[index]
  11. print(b)
  12. # [1, 6, 6, 7] 这就是 需要的结果 1167

得到 正确的 数据,下面开始撸代码

4. 撸代码

  1. var encode_version = "sojson.v5",
  2. ubbgr = "__0x8c0ec";
  3. var _0x8f754e = 0;
  4. var _0x130c55 = "";
  5. var _0x690c11 = 8;
  6. function _0x4a5ee7(_0x540928, _0x1c68c7, _0x55fb3a, _0xc73c5d, _0x32e9c6, _0x3a61fb, _0x1c075e) {
  7. return _0x4efd4f(_0x55fb3a ^ (_0x1c68c7 | ~_0xc73c5d), _0x540928, _0x1c68c7, _0x32e9c6, _0x3a61fb, _0x1c075e);
  8. }
  9. function _0x5284de(_0x15415d, _0x4be6fe, _0x245ee5, _0x438931, _0x452339, _0x1f7c91, _0x4ef10f) {
  10. return _0x4efd4f(_0x4be6fe ^ _0x245ee5 ^ _0x438931, _0x15415d, _0x4be6fe, _0x452339, _0x1f7c91, _0x4ef10f);
  11. }
  12. function _0x1a3ade(_0x5d7666, _0x36a29d, _0x3b74c1, _0x480b22, _0x30475b, _0x1dd9e9, _0x636b5) {
  13. return _0x4efd4f(_0x36a29d & _0x480b22 | _0x3b74c1 & ~_0x480b22, _0x5d7666, _0x36a29d, _0x30475b, _0x1dd9e9, _0x636b5);
  14. }
  15. function _0x1cb164(_0x16b706, _0xbd8b87) {
  16. return _0x16b706 << _0xbd8b87 | _0x16b706 >>> 32 - _0xbd8b87;
  17. }
  18. function _0x50651a(_0x7b44fe, _0x498d2c) {
  19. var _0x2b4226 = (_0x7b44fe & 65535) + (_0x498d2c & 65535);
  20. var _0x208fba = (_0x7b44fe >> 16) + (_0x498d2c >> 16) + (_0x2b4226 >> 16);
  21. return _0x208fba << 16 | _0x2b4226 & 65535;
  22. }
  23. function _0x4efd4f(_0x29aa42, _0x422c7a, _0x2dfb85, _0x367f62, _0x591028, _0x6038d7) {
  24. return _0x50651a(_0x1cb164(_0x50651a(_0x50651a(_0x422c7a, _0x29aa42), _0x50651a(_0x367f62, _0x6038d7)), _0x591028), _0x2dfb85);
  25. }
  26. function _0x56e427(_0x28552e, _0x519e35, _0x2d221d, _0x265f8e, _0x2baabe, _0x6a5908, _0xa03ce0) {
  27. return _0x4efd4f(_0x519e35 & _0x2d221d | ~_0x519e35 & _0x265f8e, _0x28552e, _0x519e35, _0x2baabe, _0x6a5908, _0xa03ce0);
  28. }
  29. function _0x2755cc(_0x3af3a2) {
  30. var _0x5150ad = Array();
  31. var _0x536650 = 255;
  32. for (var _0x57f6ed = 0; _0x57f6ed < _0x3af3a2["length"] * _0x690c11; _0x57f6ed += _0x690c11) _0x5150ad[_0x57f6ed >> 5] |= (_0x3af3a2["charCodeAt"](_0x57f6ed / _0x690c11) & _0x536650) << _0x57f6ed % 32;
  33. return _0x5150ad;
  34. }
  35. function _0x5f2dd4(_0x8dce70, _0x16e827) {
  36. _0x8dce70[_0x16e827 >> 5] |= 128 << _0x16e827 % 32;
  37. _0x8dce70[(_0x16e827 + 64 >>> 9 << 4) + 14] = _0x16e827;
  38. var _0x4351a3 = 1732584193;
  39. var _0x245564 = -271733879;
  40. var _0x80a9d = -1732584194;
  41. var _0x3c2f7b = 271733878;
  42. for (var _0x2bfaa7 = 0; _0x2bfaa7 < _0x8dce70["length"]; _0x2bfaa7 += 16) {
  43. var _0x308fc9 = _0x4351a3;
  44. var _0x5432b0 = _0x245564;
  45. var _0xb174aa = _0x80a9d;
  46. var _0x227f98 = _0x3c2f7b;
  47. _0x4351a3 = _0x56e427(_0x4351a3, _0x245564, _0x80a9d, _0x3c2f7b, _0x8dce70[_0x2bfaa7 + 0], 7, -680876936);
  48. _0x3c2f7b = _0x56e427(_0x3c2f7b, _0x4351a3, _0x245564, _0x80a9d, _0x8dce70[_0x2bfaa7 + 1], 12, -389564586);
  49. _0x80a9d = _0x56e427(_0x80a9d, _0x3c2f7b, _0x4351a3, _0x245564, _0x8dce70[_0x2bfaa7 + 2], 17, 606105819);
  50. _0x245564 = _0x56e427(_0x245564, _0x80a9d, _0x3c2f7b, _0x4351a3, _0x8dce70[_0x2bfaa7 + 3], 22, -1044525330);
  51. _0x4351a3 = _0x56e427(_0x4351a3, _0x245564, _0x80a9d, _0x3c2f7b, _0x8dce70[_0x2bfaa7 + 4], 7, -176418897);
  52. _0x3c2f7b = _0x56e427(_0x3c2f7b, _0x4351a3, _0x245564, _0x80a9d, _0x8dce70[_0x2bfaa7 + 5], 12, 1200080426);
  53. _0x80a9d = _0x56e427(_0x80a9d, _0x3c2f7b, _0x4351a3, _0x245564, _0x8dce70[_0x2bfaa7 + 6], 17, -1473231341);
  54. _0x245564 = _0x56e427(_0x245564, _0x80a9d, _0x3c2f7b, _0x4351a3, _0x8dce70[_0x2bfaa7 + 7], 22, -45705983);
  55. _0x4351a3 = _0x56e427(_0x4351a3, _0x245564, _0x80a9d, _0x3c2f7b, _0x8dce70[_0x2bfaa7 + 8], 7, 1770035416);
  56. _0x3c2f7b = _0x56e427(_0x3c2f7b, _0x4351a3, _0x245564, _0x80a9d, _0x8dce70[_0x2bfaa7 + 9], 12, -1958414417);
  57. _0x80a9d = _0x56e427(_0x80a9d, _0x3c2f7b, _0x4351a3, _0x245564, _0x8dce70[_0x2bfaa7 + 10], 17, -42063);
  58. _0x245564 = _0x56e427(_0x245564, _0x80a9d, _0x3c2f7b, _0x4351a3, _0x8dce70[_0x2bfaa7 + 11], 22, -1990404162);
  59. _0x4351a3 = _0x56e427(_0x4351a3, _0x245564, _0x80a9d, _0x3c2f7b, _0x8dce70[_0x2bfaa7 + 12], 7, 1804603682);
  60. _0x3c2f7b = _0x56e427(_0x3c2f7b, _0x4351a3, _0x245564, _0x80a9d, _0x8dce70[_0x2bfaa7 + 13], 12, -40341101);
  61. _0x80a9d = _0x56e427(_0x80a9d, _0x3c2f7b, _0x4351a3, _0x245564, _0x8dce70[_0x2bfaa7 + 14], 17, -1502002290);
  62. _0x245564 = _0x56e427(_0x245564, _0x80a9d, _0x3c2f7b, _0x4351a3, _0x8dce70[_0x2bfaa7 + 15], 22, 1236535329);
  63. _0x4351a3 = _0x1a3ade(_0x4351a3, _0x245564, _0x80a9d, _0x3c2f7b, _0x8dce70[_0x2bfaa7 + 1], 5, -165796510);
  64. _0x3c2f7b = _0x1a3ade(_0x3c2f7b, _0x4351a3, _0x245564, _0x80a9d, _0x8dce70[_0x2bfaa7 + 6], 9, -1069501632);
  65. _0x80a9d = _0x1a3ade(_0x80a9d, _0x3c2f7b, _0x4351a3, _0x245564, _0x8dce70[_0x2bfaa7 + 11], 14, 643717713);
  66. _0x245564 = _0x1a3ade(_0x245564, _0x80a9d, _0x3c2f7b, _0x4351a3, _0x8dce70[_0x2bfaa7 + 0], 20, -373897302);
  67. _0x4351a3 = _0x1a3ade(_0x4351a3, _0x245564, _0x80a9d, _0x3c2f7b, _0x8dce70[_0x2bfaa7 + 5], 5, -701558691);
  68. _0x3c2f7b = _0x1a3ade(_0x3c2f7b, _0x4351a3, _0x245564, _0x80a9d, _0x8dce70[_0x2bfaa7 + 10], 9, 38016083);
  69. _0x80a9d = _0x1a3ade(_0x80a9d, _0x3c2f7b, _0x4351a3, _0x245564, _0x8dce70[_0x2bfaa7 + 15], 14, -660478335);
  70. _0x245564 = _0x1a3ade(_0x245564, _0x80a9d, _0x3c2f7b, _0x4351a3, _0x8dce70[_0x2bfaa7 + 4], 20, -405537848);
  71. _0x4351a3 = _0x1a3ade(_0x4351a3, _0x245564, _0x80a9d, _0x3c2f7b, _0x8dce70[_0x2bfaa7 + 9], 5, 568446438);
  72. _0x3c2f7b = _0x1a3ade(_0x3c2f7b, _0x4351a3, _0x245564, _0x80a9d, _0x8dce70[_0x2bfaa7 + 14], 9, -1019803690);
  73. _0x80a9d = _0x1a3ade(_0x80a9d, _0x3c2f7b, _0x4351a3, _0x245564, _0x8dce70[_0x2bfaa7 + 3], 14, -187363961);
  74. _0x245564 = _0x1a3ade(_0x245564, _0x80a9d, _0x3c2f7b, _0x4351a3, _0x8dce70[_0x2bfaa7 + 8], 20, 1163531501);
  75. _0x4351a3 = _0x1a3ade(_0x4351a3, _0x245564, _0x80a9d, _0x3c2f7b, _0x8dce70[_0x2bfaa7 + 13], 5, -1444681467);
  76. _0x3c2f7b = _0x1a3ade(_0x3c2f7b, _0x4351a3, _0x245564, _0x80a9d, _0x8dce70[_0x2bfaa7 + 2], 9, -51403784);
  77. _0x80a9d = _0x1a3ade(_0x80a9d, _0x3c2f7b, _0x4351a3, _0x245564, _0x8dce70[_0x2bfaa7 + 7], 14, 1735328473);
  78. _0x245564 = _0x1a3ade(_0x245564, _0x80a9d, _0x3c2f7b, _0x4351a3, _0x8dce70[_0x2bfaa7 + 12], 20, -1926607734);
  79. _0x4351a3 = _0x5284de(_0x4351a3, _0x245564, _0x80a9d, _0x3c2f7b, _0x8dce70[_0x2bfaa7 + 5], 4, -378558);
  80. _0x3c2f7b = _0x5284de(_0x3c2f7b, _0x4351a3, _0x245564, _0x80a9d, _0x8dce70[_0x2bfaa7 + 8], 11, -2022574463);
  81. _0x80a9d = _0x5284de(_0x80a9d, _0x3c2f7b, _0x4351a3, _0x245564, _0x8dce70[_0x2bfaa7 + 11], 16, 1839030562);
  82. _0x245564 = _0x5284de(_0x245564, _0x80a9d, _0x3c2f7b, _0x4351a3, _0x8dce70[_0x2bfaa7 + 14], 23, -35309556);
  83. _0x4351a3 = _0x5284de(_0x4351a3, _0x245564, _0x80a9d, _0x3c2f7b, _0x8dce70[_0x2bfaa7 + 1], 4, -1530992060);
  84. _0x3c2f7b = _0x5284de(_0x3c2f7b, _0x4351a3, _0x245564, _0x80a9d, _0x8dce70[_0x2bfaa7 + 4], 11, 1272893353);
  85. _0x80a9d = _0x5284de(_0x80a9d, _0x3c2f7b, _0x4351a3, _0x245564, _0x8dce70[_0x2bfaa7 + 7], 16, -155497632);
  86. _0x245564 = _0x5284de(_0x245564, _0x80a9d, _0x3c2f7b, _0x4351a3, _0x8dce70[_0x2bfaa7 + 10], 23, -1094730640);
  87. _0x4351a3 = _0x5284de(_0x4351a3, _0x245564, _0x80a9d, _0x3c2f7b, _0x8dce70[_0x2bfaa7 + 13], 4, 681279174);
  88. _0x3c2f7b = _0x5284de(_0x3c2f7b, _0x4351a3, _0x245564, _0x80a9d, _0x8dce70[_0x2bfaa7 + 0], 11, -358537222);
  89. _0x80a9d = _0x5284de(_0x80a9d, _0x3c2f7b, _0x4351a3, _0x245564, _0x8dce70[_0x2bfaa7 + 3], 16, -722521979);
  90. _0x245564 = _0x5284de(_0x245564, _0x80a9d, _0x3c2f7b, _0x4351a3, _0x8dce70[_0x2bfaa7 + 6], 23, 76029189);
  91. _0x4351a3 = _0x5284de(_0x4351a3, _0x245564, _0x80a9d, _0x3c2f7b, _0x8dce70[_0x2bfaa7 + 9], 4, -640364487);
  92. _0x3c2f7b = _0x5284de(_0x3c2f7b, _0x4351a3, _0x245564, _0x80a9d, _0x8dce70[_0x2bfaa7 + 12], 11, -421815835);
  93. _0x80a9d = _0x5284de(_0x80a9d, _0x3c2f7b, _0x4351a3, _0x245564, _0x8dce70[_0x2bfaa7 + 15], 16, 530742520);
  94. _0x245564 = _0x5284de(_0x245564, _0x80a9d, _0x3c2f7b, _0x4351a3, _0x8dce70[_0x2bfaa7 + 2], 23, -995338651);
  95. _0x4351a3 = _0x4a5ee7(_0x4351a3, _0x245564, _0x80a9d, _0x3c2f7b, _0x8dce70[_0x2bfaa7 + 0], 6, -198630844);
  96. _0x3c2f7b = _0x4a5ee7(_0x3c2f7b, _0x4351a3, _0x245564, _0x80a9d, _0x8dce70[_0x2bfaa7 + 7], 10, 1126891415);
  97. _0x80a9d = _0x4a5ee7(_0x80a9d, _0x3c2f7b, _0x4351a3, _0x245564, _0x8dce70[_0x2bfaa7 + 14], 15, -1416354905);
  98. _0x245564 = _0x4a5ee7(_0x245564, _0x80a9d, _0x3c2f7b, _0x4351a3, _0x8dce70[_0x2bfaa7 + 5], 21, -57434055);
  99. _0x4351a3 = _0x4a5ee7(_0x4351a3, _0x245564, _0x80a9d, _0x3c2f7b, _0x8dce70[_0x2bfaa7 + 12], 6, 1700485571);
  100. _0x3c2f7b = _0x4a5ee7(_0x3c2f7b, _0x4351a3, _0x245564, _0x80a9d, _0x8dce70[_0x2bfaa7 + 3], 10, -1894986606);
  101. _0x80a9d = _0x4a5ee7(_0x80a9d, _0x3c2f7b, _0x4351a3, _0x245564, _0x8dce70[_0x2bfaa7 + 10], 15, -1051523);
  102. _0x245564 = _0x4a5ee7(_0x245564, _0x80a9d, _0x3c2f7b, _0x4351a3, _0x8dce70[_0x2bfaa7 + 1], 21, -2054922799);
  103. _0x4351a3 = _0x4a5ee7(_0x4351a3, _0x245564, _0x80a9d, _0x3c2f7b, _0x8dce70[_0x2bfaa7 + 8], 6, 1873313359);
  104. _0x3c2f7b = _0x4a5ee7(_0x3c2f7b, _0x4351a3, _0x245564, _0x80a9d, _0x8dce70[_0x2bfaa7 + 15], 10, -30611744);
  105. _0x80a9d = _0x4a5ee7(_0x80a9d, _0x3c2f7b, _0x4351a3, _0x245564, _0x8dce70[_0x2bfaa7 + 6], 15, -1560198380);
  106. _0x245564 = _0x4a5ee7(_0x245564, _0x80a9d, _0x3c2f7b, _0x4351a3, _0x8dce70[_0x2bfaa7 + 13], 21, 1309151649);
  107. _0x4351a3 = _0x4a5ee7(_0x4351a3, _0x245564, _0x80a9d, _0x3c2f7b, _0x8dce70[_0x2bfaa7 + 4], 6, -145523070);
  108. _0x3c2f7b = _0x4a5ee7(_0x3c2f7b, _0x4351a3, _0x245564, _0x80a9d, _0x8dce70[_0x2bfaa7 + 11], 10, -1120210379);
  109. _0x80a9d = _0x4a5ee7(_0x80a9d, _0x3c2f7b, _0x4351a3, _0x245564, _0x8dce70[_0x2bfaa7 + 2], 15, 718787259);
  110. _0x245564 = _0x4a5ee7(_0x245564, _0x80a9d, _0x3c2f7b, _0x4351a3, _0x8dce70[_0x2bfaa7 + 9], 21, -343485551);
  111. _0x4351a3 = _0x50651a(_0x4351a3, _0x308fc9);
  112. _0x245564 = _0x50651a(_0x245564, _0x5432b0);
  113. _0x80a9d = _0x50651a(_0x80a9d, _0xb174aa);
  114. _0x3c2f7b = _0x50651a(_0x3c2f7b, _0x227f98);
  115. }
  116. return Array(_0x4351a3, _0x245564, _0x80a9d, _0x3c2f7b);
  117. }
  118. function _0x397d65(_0x41002e) {
  119. var _0x2c5f6d = "0123456789abcdef";
  120. var _0x389ccd = "";
  121. for (var _0x2101be = 0; _0x2101be < _0x41002e["length"] * 4; _0x2101be++) {
  122. _0x389ccd += _0x2c5f6d["charAt"](_0x41002e[_0x2101be >> 2] >> _0x2101be % 4 * 8 + 4 & 15) + _0x2c5f6d["charAt"](_0x41002e[_0x2101be >> 2] >> _0x2101be % 4 * 8 & 15);
  123. }
  124. return _0x389ccd;
  125. }
  126. function _0x124e6b(_0x280199) {
  127. return _0x397d65(_0x5f2dd4(_0x2755cc(_0x280199), _0x280199["length"] * _0x690c11));
  128. }
  129. var Base64 = {
  130. // private property
  131. _keyStr: "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="
  132. // public method for encoding
  133. , encode: function (input)
  134. {
  135. var output = "";
  136. var chr1, chr2, chr3, enc1, enc2, enc3, enc4;
  137. var i = 0;
  138. input = Base64._utf8_encode(input);
  139. while (i < input.length)
  140. {
  141. chr1 = input.charCodeAt(i++);
  142. chr2 = input.charCodeAt(i++);
  143. chr3 = input.charCodeAt(i++);
  144. enc1 = chr1 >> 2;
  145. enc2 = ((chr1 & 3) << 4) | (chr2 >> 4);
  146. enc3 = ((chr2 & 15) << 2) | (chr3 >> 6);
  147. enc4 = chr3 & 63;
  148. if (isNaN(chr2))
  149. {
  150. enc3 = enc4 = 64;
  151. }
  152. else if (isNaN(chr3))
  153. {
  154. enc4 = 64;
  155. }
  156. output = output +
  157. this._keyStr.charAt(enc1) + this._keyStr.charAt(enc2) +
  158. this._keyStr.charAt(enc3) + this._keyStr.charAt(enc4);
  159. } // Whend
  160. return output;
  161. } // End Function encode
  162. // public method for decoding
  163. ,decode: function (input)
  164. {
  165. var output = "";
  166. var chr1, chr2, chr3;
  167. var enc1, enc2, enc3, enc4;
  168. var i = 0;
  169. input = input.replace(/[^A-Za-z0-9\+\/\=]/g, "");
  170. while (i < input.length)
  171. {
  172. enc1 = this._keyStr.indexOf(input.charAt(i++));
  173. enc2 = this._keyStr.indexOf(input.charAt(i++));
  174. enc3 = this._keyStr.indexOf(input.charAt(i++));
  175. enc4 = this._keyStr.indexOf(input.charAt(i++));
  176. chr1 = (enc1 << 2) | (enc2 >> 4);
  177. chr2 = ((enc2 & 15) << 4) | (enc3 >> 2);
  178. chr3 = ((enc3 & 3) << 6) | enc4;
  179. output = output + String.fromCharCode(chr1);
  180. if (enc3 != 64)
  181. {
  182. output = output + String.fromCharCode(chr2);
  183. }
  184. if (enc4 != 64)
  185. {
  186. output = output + String.fromCharCode(chr3);
  187. }
  188. } // Whend
  189. output = Base64._utf8_decode(output);
  190. return output;
  191. } // End Function decode
  192. // private method for UTF-8 encoding
  193. ,_utf8_encode: function (string)
  194. {
  195. var utftext = "";
  196. string = String(string).replace(/\r\n/g, "\n");
  197. for (var n = 0; n < string.length; n++)
  198. {
  199. var c = string.charCodeAt(n);
  200. if (c < 128)
  201. {
  202. utftext += String.fromCharCode(c);
  203. }
  204. else if ((c > 127) && (c < 2048))
  205. {
  206. utftext += String.fromCharCode((c >> 6) | 192);
  207. utftext += String.fromCharCode((c & 63) | 128);
  208. }
  209. else
  210. {
  211. utftext += String.fromCharCode((c >> 12) | 224);
  212. utftext += String.fromCharCode(((c >> 6) & 63) | 128);
  213. utftext += String.fromCharCode((c & 63) | 128);
  214. }
  215. } // Next n
  216. return utftext;
  217. } // End Function _utf8_encode
  218. // private method for UTF-8 decoding
  219. ,_utf8_decode: function (utftext)
  220. {
  221. var string = "";
  222. var i = 0;
  223. var c, c1, c2, c3;
  224. c = c1 = c2 = 0;
  225. while (i < utftext.length)
  226. {
  227. c = utftext.charCodeAt(i);
  228. if (c < 128)
  229. {
  230. string += String.fromCharCode(c);
  231. i++;
  232. }
  233. else if ((c > 191) && (c < 224))
  234. {
  235. c2 = utftext.charCodeAt(i + 1);
  236. string += String.fromCharCode(((c & 31) << 6) | (c2 & 63));
  237. i += 2;
  238. }
  239. else
  240. {
  241. c2 = utftext.charCodeAt(i + 1);
  242. c3 = utftext.charCodeAt(i + 2);
  243. string += String.fromCharCode(((c & 15) << 12) | ((c2 & 63) << 6) | (c3 & 63));
  244. i += 3;
  245. }
  246. } // Whend
  247. return string;
  248. } // End Function _utf8_decode
  249. };
  250. function get_class(data) {
  251. // var class_name = _0x124e6b(btoa(data["key"] + data["value"])["replace"](/=/g, ""));
  252. var class_name = _0x124e6b(Base64.encode(data["key"] + data["value"])["replace"](/=/g, ""));
  253. // btoa
  254. // var s = new Buffer.from(data["key"] + data["value"], "binary").toString("base64")
  255. // console.log(s)
  256. // var class_name = _0x124e6b(s["replace"](/=/g, ""));
  257. console.log('class_name -->>',class_name)
  258. return class_name
  259. }
  260. data = {'status': '1', 'state': 'success', 'key': '1NrwivKFu3', 'value': 'w8125c9xlj', 'IV': 'qliuz', 'info': '<td class="info"><img src="https://img-blog.csdnimg.cn/2022010710524198401.png" class="img_number 9a8a609402dae813bb9c1cfc6cf9495a" style="left:0px"><img src="https://img-blog.csdnimg.cn/2022010710524162045.png" class="img_number 9a8a609402dae813bb9c1cfc6cf9495a" style="left:18px"><img src="https://img-blog.csdnimg.cn/2022010710524117763.png" class="img_number 5f3ea590ab60c410b19492216448e6f5" style="left:9px"><img src="https://img-blog.csdnimg.cn/2022010710524265568.png" class="img_number 9a8a609402dae813bb9c1cfc6cf9495a" style="left:0px"><img src="https://img-blog.csdnimg.cn/2022010710524265568.png" class="img_number 5f3ea590ab60c410b19492216448e6f5" style="left:-9px"><img src="https://img-blog.csdnimg.cn/2022010710524198401.png" class="img_number 9a8a609402dae813bb9c1cfc6cf9495a" style="left:-18px"></td><td class="info"><img src="https://img-blog.csdnimg.cn/2022010710524281954.png" class="img_number 5f3ea590ab60c410b19492216448e6f5" style="left:18px"><img src="https://img-blog.csdnimg.cn/2022010710524265568.png" class="img_number 9a8a609402dae813bb9c1cfc6cf9495a" style="left:9px"><img src="https://img-blog.csdnimg.cn/2022010710524198401.png" class="img_number 9a8a609402dae813bb9c1cfc6cf9495a" style="left:-9px"><img src="https://img-blog.csdnimg.cn/2022010710524362290.png" class="img_number 5f3ea590ab60c410b19492216448e6f5" style="left:27px"><img src="https://img-blog.csdnimg.cn/2022010710524198401.png" class="img_number 5f3ea590ab60c410b19492216448e6f5" style="left:18px"><img src="https://img-blog.csdnimg.cn/2022010710524265568.png" class="img_number 9a8a609402dae813bb9c1cfc6cf9495a" style="left:0px"><img src="https://img-blog.csdnimg.cn/2022010710524117763.png" class="img_number 5f3ea590ab60c410b19492216448e6f5" style="left:18px"><img src="https://img-blog.csdnimg.cn/2022010710524198401.png" class="img_number 5f3ea590ab60c410b19492216448e6f5" style="left:27px"><img src="https://img-blog.csdnimg.cn/2022010710524265568.png" class="img_number 5f3ea590ab60c410b19492216448e6f5" style="left:27px"><img src="https://img-blog.csdnimg.cn/2022010710524420066.png" class="img_number 9a8a609402dae813bb9c1cfc6cf9495a" style="left:0px"></td><td class="info"><img src="https://img-blog.csdnimg.cn/2022010710524420066.png" class="img_number 9a8a609402dae813bb9c1cfc6cf9495a" style="left:18px"><img src="https://img-blog.csdnimg.cn/2022010710524536642.png" class="img_number 9a8a609402dae813bb9c1cfc6cf9495a" style="left:0px"><img src="https://img-blog.csdnimg.cn/2022010710524265568.png" class="img_number 5f3ea590ab60c410b19492216448e6f5" style="left:-27px"><img src="https://img-blog.csdnimg.cn/2022010710524117763.png" class="img_number 5f3ea590ab60c410b19492216448e6f5" style="left:-9px"><img src="https://img-blog.csdnimg.cn/2022010710524198401.png" class="img_number 9a8a609402dae813bb9c1cfc6cf9495a" style="left:-18px"></td><td class="info"><img src="https://img-blog.csdnimg.cn/2022010710524198401.png" class="img_number 5f3ea590ab60c410b19492216448e6f5" style="left:9px"><img src="https://img-blog.csdnimg.cn/2022010710524610892.png" class="img_number 9a8a609402dae813bb9c1cfc6cf9495a" style="left:9px"><img src="https://img-blog.csdnimg.cn/2022010710524610892.png" class="img_number 9a8a609402dae813bb9c1cfc6cf9495a" style="left:-9px"><img src="https://img-blog.csdnimg.cn/2022010710524362290.png" class="img_number 5f3ea590ab60c410b19492216448e6f5" style="left:-18px"><img src="https://img-blog.csdnimg.cn/2022010710524265568.png" class="img_number 5f3ea590ab60c410b19492216448e6f5" style="left:18px"><img src="https://img-blog.csdnimg.cn/2022010710524362290.png" class="img_number 5f3ea590ab60c410b19492216448e6f5" style="left:18px"><img src="https://img-blog.csdnimg.cn/2022010710524162045.png" class="img_number 9a8a609402dae813bb9c1cfc6cf9495a" style="left:0px"><img src="https://img-blog.csdnimg.cn/2022010710524362290.png" class="img_number 5f3ea590ab60c410b19492216448e6f5" style="left:0px"><img src="https://img-blog.csdnimg.cn/2022010710524198401.png" class="img_number 5f3ea590ab60c410b19492216448e6f5" style="left:9px"><img src="https://img-blog.csdnimg.cn/2022010710524281954.png" class="img_number 9a8a609402dae813bb9c1cfc6cf9495a" style="left:0px"></td><td class="info"><img src="https://img-blog.csdnimg.cn/2022010710524859840.png" class="img_number 5f3ea590ab60c410b19492216448e6f5" style="left:-9px"><img src="https://img-blog.csdnimg.cn/2022010710524610892.png" class="img_number 9a8a609402dae813bb9c1cfc6cf9495a" style="left:0px"><img src="https://img-blog.csdnimg.cn/2022010710524536642.png" class="img_number 9a8a609402dae813bb9c1cfc6cf9495a" style="left:0px"><img src="https://img-blog.csdnimg.cn/2022010710524859840.png" class="img_number 5f3ea590ab60c410b19492216448e6f5" style="left:9px"><img src="https://img-blog.csdnimg.cn/2022010710524117763.png" class="img_number 5f3ea590ab60c410b19492216448e6f5" style="left:-9px"><img src="https://img-blog.csdnimg.cn/2022010710524198401.png" class="img_number 5f3ea590ab60c410b19492216448e6f5" style="left:9px"><img src="https://img-blog.csdnimg.cn/2022010710524859840.png" class="img_number 9a8a609402dae813bb9c1cfc6cf9495a" style="left:9px"><img src="https://img-blog.csdnimg.cn/2022010710524117763.png" class="img_number 5f3ea590ab60c410b19492216448e6f5" style="left:18px"><img src="https://img-blog.csdnimg.cn/2022010710524117763.png" class="img_number 5f3ea590ab60c410b19492216448e6f5" style="left:18px"><img src="https://img-blog.csdnimg.cn/2022010710524198401.png" class="img_number 5f3ea590ab60c410b19492216448e6f5" style="left:-9px"><img src="https://img-blog.csdnimg.cn/2022010710524265568.png" class="img_number 9a8a609402dae813bb9c1cfc6cf9495a" style="left:-9px"></td><td class="info"><img src="https://img-blog.csdnimg.cn/2022010710524281954.png" class="img_number 9a8a609402dae813bb9c1cfc6cf9495a" style="left:0px"><img src="https://img-blog.csdnimg.cn/2022010710524610892.png" class="img_number 9a8a609402dae813bb9c1cfc6cf9495a" style="left:0px"><img src="https://img-blog.csdnimg.cn/2022010710524162045.png" class="img_number 9a8a609402dae813bb9c1cfc6cf9495a" style="left:9px"><img src="https://img-blog.csdnimg.cn/2022010710524198401.png" class="img_number 9a8a609402dae813bb9c1cfc6cf9495a" style="left:-9px"><img src="https://img-blog.csdnimg.cn/2022010710524362290.png" class="img_number 5f3ea590ab60c410b19492216448e6f5" style="left:-18px"><img src="https://img-blog.csdnimg.cn/2022010710524117763.png" class="img_number 5f3ea590ab60c410b19492216448e6f5" style="left:-9px"></td><td class="info"><img src="https://img-blog.csdnimg.cn/2022010710524281954.png" class="img_number 5f3ea590ab60c410b19492216448e6f5" style="left:-18px"><img src="https://img-blog.csdnimg.cn/2022010710524198401.png" class="img_number 9a8a609402dae813bb9c1cfc6cf9495a" style="left:9px"><img src="https://img-blog.csdnimg.cn/2022010710524117763.png" class="img_number 5f3ea590ab60c410b19492216448e6f5" style="left:-27px"><img src="https://img-blog.csdnimg.cn/2022010710524265568.png" class="img_number 5f3ea590ab60c410b19492216448e6f5" style="left:27px"><img src="https://img-blog.csdnimg.cn/2022010710524610892.png" class="img_number 9a8a609402dae813bb9c1cfc6cf9495a" style="left:-9px"><img src="https://img-blog.csdnimg.cn/2022010710524162045.png" class="img_number 9a8a609402dae813bb9c1cfc6cf9495a" style="left:0px"><img src="https://img-blog.csdnimg.cn/2022010710524162045.png" class="img_number 5f3ea590ab60c410b19492216448e6f5" style="left:0px"><img src="https://img-blog.csdnimg.cn/2022010710524265568.png" class="img_number 5f3ea590ab60c410b19492216448e6f5" style="left:18px"><img src="https://img-blog.csdnimg.cn/2022010710524362290.png" class="img_number 5f3ea590ab60c410b19492216448e6f5" style="left:-9px"><img src="https://img-blog.csdnimg.cn/2022010710524536642.png" class="img_number 5f3ea590ab60c410b19492216448e6f5" style="left:18px"><img src="https://img-blog.csdnimg.cn/2022010710524281954.png" class="img_number 5f3ea590ab60c410b19492216448e6f5" style="left:0px"><img src="https://img-blog.csdnimg.cn/2022010710524198401.png" class="img_number 9a8a609402dae813bb9c1cfc6cf9495a" style="left:0px"><img src="https://img-blog.csdnimg.cn/2022010710524117763.png" class="img_number 5f3ea590ab60c410b19492216448e6f5" style="left:18px"><img src="https://img-blog.csdnimg.cn/2022010710524536642.png" class="img_number 5f3ea590ab60c410b19492216448e6f5" style="left:27px"></td><td class="info"><img src="https://img-blog.csdnimg.cn/2022010710524265568.png" class="img_number 9a8a609402dae813bb9c1cfc6cf9495a" style="left:9px"><img src="https://img-blog.csdnimg.cn/2022010710524265568.png" class="img_number 5f3ea590ab60c410b19492216448e6f5" style="left:27px"><img src="https://img-blog.csdnimg.cn/2022010710524420066.png" class="img_number 9a8a609402dae813bb9c1cfc6cf9495a" style="left:9px"><img src="https://img-blog.csdnimg.cn/2022010710524420066.png" class="img_number 5f3ea590ab60c410b19492216448e6f5" style="left:18px"><img src="https://img-blog.csdnimg.cn/2022010710524281954.png" class="img_number 9a8a609402dae813bb9c1cfc6cf9495a" style="left:9px"><img src="https://img-blog.csdnimg.cn/2022010710524536642.png" class="img_number 9a8a609402dae813bb9c1cfc6cf9495a" style="left:-27px"></td><td class="info"><img src="https://img-blog.csdnimg.cn/2022010710524265568.png" class="img_number 5f3ea590ab60c410b19492216448e6f5" style="left:-9px"><img src="https://img-blog.csdnimg.cn/2022010710524610892.png" class="img_number 5f3ea590ab60c410b19492216448e6f5" style="left:-18px"><img src="https://img-blog.csdnimg.cn/2022010710524117763.png" class="img_number 9a8a609402dae813bb9c1cfc6cf9495a" style="left:9px"><img src="https://img-blog.csdnimg.cn/2022010710524610892.png" class="img_number 5f3ea590ab60c410b19492216448e6f5" style="left:18px"><img src="https://img-blog.csdnimg.cn/2022010710524859840.png" class="img_number 5f3ea590ab60c410b19492216448e6f5" style="left:-18px"><img src="https://img-blog.csdnimg.cn/2022010710524265568.png" class="img_number 9a8a609402dae813bb9c1cfc6cf9495a" style="left:-9px"><img src="https://img-blog.csdnimg.cn/2022010710524420066.png" class="img_number 9a8a609402dae813bb9c1cfc6cf9495a" style="left:0px"></td><td class="info"><img src="https://img-blog.csdnimg.cn/2022010710524281954.png" class="img_number 9a8a609402dae813bb9c1cfc6cf9495a" style="left:0px"><img src="https://img-blog.csdnimg.cn/2022010710524265568.png" class="img_number 9a8a609402dae813bb9c1cfc6cf9495a" style="left:0px"><img src="https://img-blog.csdnimg.cn/2022010710524536642.png" class="img_number 5f3ea590ab60c410b19492216448e6f5" style="left:18px"><img src="https://img-blog.csdnimg.cn/2022010710524281954.png" class="img_number 9a8a609402dae813bb9c1cfc6cf9495a" style="left:9px"><img src="https://img-blog.csdnimg.cn/2022010710524420066.png" class="img_number 9a8a609402dae813bb9c1cfc6cf9495a" style="left:-9px"></td>'}
  261. get_class(data)
  1. # -*- encoding=utf-8 -*-
  2. from operator import itemgetter
  3. import requests
  4. from parsel import Selector
  5. import execjs
  6. import re
  7. cookies = {
  8. 'Hm_lvt_337e99a01a907a08d00bed4a1a52e35d': '1608776277,1609252702,1609295123,1609308428',
  9. 'sessionid': '8iaw2emkx9fedvjvq8sntsa7f986uy0n',
  10. 'no-alert': 'true',
  11. 'Hm_lpvt_337e99a01a907a08d00bed4a1a52e35d': '1609308998',
  12. }
  13. headers = {
  14. 'Connection': 'keep-alive',
  15. 'Pragma': 'no-cache',
  16. 'Cache-Control': 'no-cache',
  17. 'Accept': 'application/json, text/javascript, */*; q=0.01',
  18. 'X-Requested-With': 'XMLHttpRequest',
  19. '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',
  20. 'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8',
  21. 'Origin': 'http://www.python-spider.com',
  22. 'Referer': 'http://www.python-spider.com/challenge/19',
  23. 'Accept-Language': 'zh-CN,zh;q=0.9',
  24. }
  25. img_dict = {
  26. "iVBORw0KGgoAAAANSUhEUgAAABoAAAAjCAMAAAC94eqZAAAAAXNSR0IArs4c6QAAAN5QTFRF+fv9od/9+fvb6axkUAAA2fv9+frlAAAAAABQ+d+jAEedFFuhbgAAFgAAyY0wAABC7fv9AB48Vqblq14Au/D9AAAamdn9PFxv8bdyfsT9aLHw+fHF+fO7ABhyAHrF+fv1fjAA+fvISJ3biYl6+cWD+eO7AACDaEwoiVQgQCoYmUQAIGCrQBgAAABqwYE4yaub+dmbcKPToVQAoVwY+fvt0aNysWo4kaPFQAAA4fP94adYgQAAcGBAiS4AFkyDNoHFeImL+euzIHa7ueP9AC6DUKHbcImLKEBiAIHFyef90jE/4QAAAQNJREFUKM9jYIADNn0bTXZ2QXFzSwZUIG+qww4FgoYCyDJMZuxIQJsVSY8eSERU3EFZnRfEckLokwAJcHuCmKoaIEVSMBlFW5AM1BQmYyDHRQQqxQzkyMI4DNIKQC5UG5sRkK2EsBmkkgtiBicLOzu/GEJKhgfOl0CogpgiDBQQAjP5gCw5ZF/CBcCKXJGlrEDGgF2rhXARBKgABdTAvrIGsiSRpQws2Nl10RwEBSAnc8AZjAMuBXIhDik8/gKHhiTW0DBBBDRSGHLDA9oDa8jjiy901zsiAhVP2sCWopSQOSjpEKGQGZR67ZwRqVcIPc27u0HTvL0AMTkFGCQ48xeWXAkAP2Ubepd6ecoAAAAASUVORK5CYII=": 0,
  27. "iVBORw0KGgoAAAANSUhEUgAAABoAAAAjCAMAAAC94eqZAAAAAXNSR0IArs4c6QAAAF1QTFRFAAAAoVQAPAkAxYQ8+cWD+fvnGQAA+fv9AFSj4fv97fv9+eaz8cmHYJ3TgavTueP9ibvlIFSLFhgYACRQoXJIIGCjAAAg+evT6bd6qWRYcEAYcBgA2aNY2buD+fv1QCX7aQAAAGBJREFUKM/ty0kOgCAUA9CvCCg4z/P9j2lgYWLoTzwA3bUvJc2GPs0elBeQbkEcnYqjMiWGvEBavQCSQhEmu7u5D2kZ/WW6ApKJg7kyGaau0RrS0LoCaKuNxvQmUqR/9ACWThad7ZHt3QAAAABJRU5ErkJggg==": 1,
  28. "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,
  29. "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,
  30. "iVBORw0KGgoAAAANSUhEUgAAABoAAAAlCAMAAABruAmEAAAAAXNSR0IArs4c6QAAAIFQTFRF+fv9hcb9+fDH+fvzQERAAAAYABhYAAAAAIHF4aNQ98WD5Pv9Fl+uXRgAFgAAXaro+fvbNAAAtWwY2aJQyYk4eC4A+duf8bx2oVgNgTYAFlyj3aVY2fv9+cuPWKPbod39qd/9gXpQQCoYwYE4+d+rSAAA+eezsef9ACQ4ABhqmUgAvyuUPQAAAKVJREFUKM/V0skSgjAQRdGGiC2oiBM4ASo4/v8H2smCIbxUWe58q1RO1V010ffzt8wTKGrFLspiF93n7CCTw3SMXVSbHKJkxzy+QJJcUKwRpZI7nEJAJlcSIikFBSFKbzqHKHmbHKKN5BaEKF8yz6aI/L3kzgRINbkBRU3Opk7OIlW1OYuyTq5P+oReD0IUMZ73K+Wj3q7y+9QPb3AFofN6/5vafQB+Gg2W8rL+LAAAAABJRU5ErkJggg==": 4,
  31. "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,
  32. "/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,
  33. "iVBORw0KGgoAAAANSUhEUgAAABkAAAAlCAMAAACAj7KHAAAAAXNSR0IArs4c6QAAAK5QTFRF+fv96fv9+fv1MozNgcX9ufP9TAAAAAAA+fvloVQAod39FgAAMwAASJ3bABh6AA1UAGOv+ffNwX4wfQAAaAAA+fHADHS7gTYAwYEN2ZtIue/9+fvF+dmb8fv98bx2AAByAAA0UKLgABhycLf1+euzAAAY4addFmaz+d+j9cmDwfP9mUQA+fvbic39AABI2fv9AC6DaK/tuXYYeBgAAESb4aNQgcX1yYkwWKPbiS4A4f6kdQAAALNJREFUKM+tk8cSgkAQRAdFV8GEATNiQjHn8P8/5oBHuw9UOddXHWa2VoROqWzQ2P8kdQcER64x4QOAuGLM8gVAp6teK+sX5JoKZgMgCRKvMwAe85I+K7wuKslLlvhRIqkiyUXBacNSkESeCmoFdJcrKSaRgoPDXr1hscpzIYeB+amZPwZk0WZmgYIJMpMea7bbKpkKiQn3iMQui7mr2e3ICsBt0j3hnb03qzZsfT9GFoLmA5nrDvr/6ZwVAAAAAElFTkSuQmCC": 7,
  34. "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,
  35. "/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
  36. }
  37. with open('./ob解混淆js/扣JS代码.js', encoding='utf-8') as f:
  38. Str_code = f.read()
  39. js = execjs.compile(Str_code)
  40. def get_imgnum(Count,i):
  41. data = {
  42. 'page': i
  43. }
  44. response = requests.post('http://www.python-spider.com/api/challenge19', headers=headers, cookies=cookies, data=data,
  45. verify=False)
  46. res_josn = response.json()
  47. print('res_josn ',res_josn)
  48. result = js.call('get_class', res_josn)
  49. res_info = res_josn['info']
  50. sel = Selector(text=res_info)
  51. td_infos = sel.xpath('//td[@class="info"]')
  52. print('td_infos ',len(td_infos),td_infos)
  53. for td_info in td_infos:
  54. # print(result)
  55. # print('./img[@class!="%s"]/@src'%(result))
  56. # Num_imgs = td_info.xpath('./img[@class!="%s"]/@src'%(result)).getall()
  57. # Num_imgs_not = td_info.xpath('./img').getall()
  58. Num_imgs = td_info.xpath('./img[not(contains(@class,"%s"))]' % (result)).getall()
  59. # print('Num_imgs_not -->', result, len(Num_imgs_not))
  60. # print('Num_imgs -->', len(Num_imgs))
  61. left_nums = []
  62. num_s = []
  63. for Num_img in Num_imgs:
  64. left_num = re.findall('(?<=style="left:).+?(?=px")', Num_img)[0]
  65. img_num = re.findall('(?<=data:image/png;base64,).+?(?=")', Num_img)[0]
  66. # print(img_num)
  67. # print(left_num)
  68. left_nums.append(int(left_num) / 9)
  69. num_s.append(str(img_dict[img_num]))
  70. print()
  71. print()
  72. print(len(left_nums), left_nums)
  73. print(len(num_s), num_s)
  74. tem = num_s.copy()
  75. for index, left_num in enumerate(left_nums):
  76. # 不为 0,才有 偏移量
  77. if left_num:
  78. if left_num > 0:
  79. num_s[index + int(left_num)] = tem[index]
  80. else:
  81. num_s[index - abs(int(left_num))] = tem[index]
  82. ImgN = int(''.join(num_s))
  83. print('ImgN ',ImgN,type(ImgN))
  84. Count += ImgN
  85. return Count
  86. Count = 0
  87. for i in range(1,101):
  88. Count = get_imgnum(Count,i)
  89. print('Count -->>',Count)

 

总结 :

这一题俩个难点,

第一个无限debug:

              无限debugg 通过fiddler修改返回的相应数据,

              浏览器的 Overides 把请求的数据保存到 本地,相同的请求就会先去返回本地的文件

第二个就是 css 反爬 .css反爬,有俩个注意的点,

              第一个是会隐藏一些多余的图片,通过JS方法获取class的值修改css样式,通过分析JS获取class的值,过滤掉隐藏的图片

              第二个是通过 css的样式对图片进行偏移,扰乱正确的顺序,这里要分析偏移量的逻辑,还原正确的顺序就可以得到正确的数据了

 

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/article/detail/59763
推荐阅读
相关标签
  

闽ICP备14008679号