当前位置:   article > 正文

Python爬虫最强项目案例之——JS逆向。这波学到就是赚到。_js逆向爬虫属于什么水平

js逆向爬虫属于什么水平

前言

前段时间看到有人js逆向了某手机的反馈专区,我也第一时间学习了一下,学完后一直想着凭借自己的能力,看能不能单独完成一次,拿下js逆向真正第一血,所以就有了今天的受害者,某蓝厂手机圈子的逆向。

网站分析

既然选定了目标,那就开始抓包,分析网页。

这是抓包后的情况,通过对多个包进行比较发现,实际变化的参数只有lastId、nonce、timestamp、pageNum。具体分析了一下,lastId:前一页最后一个发言用户的tid;pageNum:当前页码;timestamp:13位时间戳;nonce:不知道是什么,但是看他长了一副加密的脸。至此,目标就很清晰了,重点针对nonce。

js逆向分析

通过全局搜过,断点定位,最终将目标锁定在这一行代码上。

  e.params.nonce = Object(u["md5"])(t + "" + parseInt(1e7 * Math.random(), 10+ 132)

通过观察发现,这一行代码的最终输出结果正是我们今天的目标。

分析一下代码:

“t”:13位的时间戳

“+ "" +”:为将时间戳转为字符串

“1e7” :10000000,固定值

“Math.random()”:随机数

“parseInt”:取整

“t + "" +parseInt(1e7 * Math.random(), 10)+ 1”,这里的意思就很明显了,时间戳+取整的随机数+1,最终的结果是一个21位数。

继续分析Object(u["md5"])和32发现,这里是调用了u的[md5]方法,将前面的21位字符串和32作为参数,传给了MD5,网页源代码如下:

  1.    e.md5 = function(e, t) {
  2.                 function n(e, t) {
  3.                     return e << t | e >>> 32 - t
  4.                 }
  5.                 function i(e, t) {
  6.                     var n, i, a, r, o;
  7.                     return a = 2147483648 & e,
  8.                     r = 2147483648 & t,
  9.                     n = 1073741824 & e,
  10.                     i = 1073741824 & t,
  11.                     o = (1073741823 & e) + (1073741823 & t),
  12.                     n & i ? 2147483648 ^ o ^ a ^ r : n | i ? 1073741824 & o ? 3221225472 ^ o ^ a ^ r : 1073741824 ^ o ^ a ^ r : o ^ a ^ r
  13.                 }
  14.     …………//此处省略

目前为止,思路已经很清晰了,这里我们可以通过Python实现MD5加密,也可以抠源代码改写。为了保证百分百不出错,这里我选择了抠代码。

js代码改写

首先是源代码:

  1.   e.md5 = function(e, t) {
  2.                 function n(e, t) {
  3.                     return e << t | e >>> 32 - t
  4.                 }
  5.                 function i(e, t) {
  6.                     var n, i, a, r, o;
  7.                     return a = 2147483648 & e,
  8.                     r = 2147483648 & t,
  9.                     n = 1073741824 & e,
  10.                     i = 1073741824 & t,
  11.                     o = (1073741823 & e) + (1073741823 & t),
  12.                     n & i ? 2147483648 ^ o ^ a ^ r : n | i ? 1073741824 & o ? 3221225472 ^ o ^ a ^ r : 1073741824 ^ o ^ a ^ r : o ^ a ^ r
  13.                 }
  14.                 function a(e, t, a, r, o, s, l) {
  15.                     return e = i(e, i(i(function(e, t, n) {
  16.                         return e & t | ~e & n
  17.                     }(t, a, r), o), l)),
  18.                     i(n(e, s), t)
  19.                 }
  20.                 function r(e, t, a, r, o, s, l) {
  21.                     return e = i(e, i(i(function(e, t, n) {
  22.                         return e & n | t & ~n
  23.                     }(t, a, r), o), l)),
  24.                     i(n(e, s), t)
  25.                 }
  26.                 function o(e, t, a, r, o, s, l) {
  27.                     return e = i(e, i(i(function(e, t, n) {
  28.                         return e ^ t ^ n
  29.                     }(t, a, r), o), l)),
  30.                     i(n(e, s), t)
  31.                 }
  32.                 function s(e, t, a, r, o, s, l) {
  33.                     return e = i(e, i(i(function(e, t, n) {
  34.                         return t ^ (e | ~n)
  35.                     }(t, a, r), o), l)),
  36.                     i(n(e, s), t)
  37.                 }
  38.                 function l(e) {
  39.                     var t, n = "", i = "";
  40.                     for (t = 0; t <= 3; t++)
  41.                         n += (i = "0" + (e >>> 8 * t & 255).toString(16)).substr(i.length - 2, 
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小蓝xlanll/article/detail/391984
推荐阅读
相关标签
  

闽ICP备14008679号