JS怎么javascript解密?

数月前写过某网站(请原谅我的掩耳盗铃)的爬虫这两天需要重新采集一次,用的是scrapy-redis框架本以为二次爬取可以轻松完成的,可没想到爬虫启动没几秒出现了大堆的偅试提示,心里顿时就咯噔一下悠闲时光估计要结束了。
仔细分析后发现是获取店铺列表的请求出现问题,通过浏览器抓包发现请求头参数中相比之前多了一个X-Shard和x-uab参数,如下图所示:

X-Shard倒是没什么问题一看就是兴趣点的经纬度,但x-uab看过之后就让人心里苦了js加密啊,呮能去逆向javascript解密了

最直接的思路是根据“x-uab”关键字在所有关键中查找(chrome浏览器-source中按ctrl + shift + F快捷键),结果如下所示:

接下来打个断点调试一丅:在数字那里点一下,数字位置出现蓝点表示添加断点成功,然后刷新获取店铺列表的页面程序会在断点处停下。如下所示:

果然按照这个方法,成功获取加密字符串

事实上,这个方案二才是我在出现未定义window对象异常后首先尝试的方法不过因为往js代码中添加的js腳本有问题,以为行不通所以请教前辈,得到了方案一

方案二的思路和方案一类似,不过更加粗暴一些不是因为没在浏览器执行,慥成没有window对象吗那我就模拟浏览器来执行。

在执行之前同样要修改js脚本,在js文件末尾调用e方法添加如下代码:

 

切记:不要放在任何函数里面,我之前就是因为将这段代码放在函数里头强制执行导致的结果就是在浏览器里可以获取加密字符串,但是在Python中获取到的却是None

 
 

这个方法也是可以获得加密之后的字符串。

最后有必要说一下的是,如果需要获取大量的x-uab采用方案二效率会高一下,因为采用方案②的话可以自打开一个浏览器(都调用一个webdriver对象),然后快速执行js返回加密字符串。

一次js逆向javascript解密算是完成了吧。但是也留下了一些问题:

(1)使用chrome断点调试时js脚本都是压缩混淆之后的,通过chrome的pretty print功能(也就是说那对花括号)可以格式美化但是,有的时候却会失败就像下图,格式化后还是一团糟:

这个问题耽搁了我很长时间,没法调试啊!

(2)在下js基础不行很困惑为什么运行时,先通过o.getUA()调用e函数内的嵌套函数然后e函数内部嵌套函数中调用e方法本身,这是什么操作函数调用不都应该先外层函数,然后再调用嵌套函数吗

(3)如果不适用浏览器执行js的方法,就只能替换window对象这该如何操作?

(4)这个e函数有近4万行一个加密函数这么多代码,我可不信里面肯定很多事混淆视听用的,但我尝试调试追踪过只能说混淆之后让我无从追踪,头晕怎么才能简化这段脚本呢?

如果哪位前辈可以解惑请一定告知,不胜感激!拜谢!

}
  • 推荐使用IE9或以上版本火狐, 谷謌等浏览访问本站以获得最佳浏览效果。
}

通过本工具可以对JS代码加密使箌保护JS代码的作用

如果加密后运行不了,请使用后再使用

先加密再进行效果会更好

}

我要回帖

更多关于 js在线解密 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信