一次过反爬虫的过五关斩六将-Ali0th

栏目: Python · 发布时间: 6年前

内容简介:这一篇是我之前发在先知上的文章,今天把它移过来。当时一开始做爬虫通过解析 js 的形式去破解,感觉有点费力,现在一般不会这么搞,所以这篇文章大概看看就好。一开始浏览器看不到反爬虫的js代码。一开始打开这个网站,比较难留意到有个状态是521页面的跳转。因为这个页面一小时只出现一次,并且为1500毫秒。

这一篇是我之前发在先知上的文章,今天把它移过来。当时一开始做爬虫通过解析 js 的形式去破解,感觉有点费力,现在一般不会这么搞,所以这篇文章大概看看就好。

一次过反爬虫的过五关斩六将-Ali0th

0.2. 第一关:拿到javascript内容

一开始浏览器看不到反爬虫的js代码。

难点:

一开始打开这个网站,比较难留意到有个状态是521页面的跳转。因为这个页面一小时只出现一次,并且为1500毫秒。

过关技巧:

阻止cookie来获得javascript

具体实现:

删除cookie并阻止

一次过反爬虫的过五关斩六将-Ali0th

查看源码

一次过反爬虫的过五关斩六将-Ali0th

0.3. 第二关:获得真实代码

难点:

将真正的代码隐藏起来,阻止了那些直接一上来就解码的人。

过关技巧:

找到最终输出点为eval

具体实现:

1)美化 使用【jsbeautifier.org/】

一次过反爬虫的过五关斩六将-Ali0th

2)理解代码

一次过反爬虫的过五关斩六将-Ali0th

可以看到eval是最后一步,说明这里最后是通过eval来拼接并执行程序。所以这里可以把eval改为【console.log】放到F12的console口里看一下结果。

一次过反爬虫的过五关斩六将-Ali0th

可以看到黄色部分为运行结果,说明是二次混淆了,这个黄色部分才是真实代码。复制出来看。如下:

一次过反爬虫的过五关斩六将-Ali0th

把头尾的东西去掉,没用的。再美化之后:

一次过反爬虫的过五关斩六将-Ali0th

0.4. 第三关:修正代码

难点:

如果你看到上面有个eval就使用第二关的方法,那就错了,这里的eval在代码中间,只是用来拼接用的。而且这里还有个故意留下的坑,就是让程序运行错误,所以这里要好好理解代码,弄懂其逻辑。

过关技巧:

放到IDE里梳理代码。(这里使用ecilpse)

具体实现:

1)代码贴到ecilpse里

一次过反爬虫的过五关斩六将-Ali0th

使用eclipse搭建一个js的测试页面,随时用浏览器刷新查看结果。

2)理清代码总体逻辑,并去掉不重要代码

一次过反爬虫的过五关斩六将-Ali0th

如图为整体代码的大逻辑,于是我们可以去掉不重要的代码,留下重要部分,放到eclipse里调试。

代码为:

一次过反爬虫的过五关斩六将-Ali0th

最后的dc即输出了我们要的结果。

3)输出dc出来

在最后写上一句【console.log(dc);】然后放到F12里:

一次过反爬虫的过五关斩六将-Ali0th

看,这就是我们得到要的结果。

一次过反爬虫的过五关斩六将-Ali0th

但是,放在 python 里,这样流程走下来的结果偶尔会对,偶尔又不行了。为什么呢?还要继续深挖。

0.5. 第四关:jsfuck

难点:

特殊字符

过关技巧:

细心

具体分析:

cd数组,没错我们要搞cd数组。看起来应该是jsfuck,打CTF经常会遇到。但这里的话要怎么去分解他呢?看到这个地方:

一次过反爬虫的过五关斩六将-Ali0th

再仔细看看: f.reverse()[[-~[]]](cd[i]) 其中,reverse()是逆序的意思,可以先去掉,就剩下: f[[-~[]]](cd[i])

这个的形式其实就是 f[ ]( ) ,就是调用上面的f函数的形式,那么最奇怪的点就在这里 [ ] 里的 [-~[]] ,它是直接用的! 于是我试着直接看它是值是什么:

一次过反爬虫的过五关斩六将-Ali0th

它直接就是值为1的数组。那么直接看cd的值试试:

一次过反爬虫的过五关斩六将-Ali0th

没错是一堆数组。用python看,里面是有几层数组:

一次过反爬虫的过五关斩六将-Ali0th

为什么会这样呢?js的什么特性导致了?想了半天,想到了很多年前看到的一篇文章【 www.freebuf.com/sectool/535…

一次过反爬虫的过五关斩六将-Ali0th

好了,过了这一关,基本上算是转折点,快接近终点了。

0.6. 第五关:列表里的列表

难点:

f函数逻辑。

过关技巧:

看懂f函数逻辑,慢慢调试才知每部分的功能。

具体分析:

上一关我们看到数组里面还要数组,那么我们就要看各个数组对应的是什么值。 经过调试,发现最多出现三层数组。我们分别命令为x、y、z层。其中:

x层直接为字符串,只要拼接就行了。
y1层为ascii码。
y2层和z层为对应当前url的第n个字符。这就是为什么上面第三关还不算成功的原因。
一次过反爬虫的过五关斩六将-Ali0th

再具体说明一下z层,下面这个函数可以获得当前的页面的url,所以每个网站都不一样的。所以这一层个人认为是个相当棒的设计。

一次过反爬虫的过五关斩六将-Ali0th

比如这里访问的是 http://localhost/ ,那么先过滤出来 localhost/ ,然后如果cd里这个z层数组值是4,那么得到的字符是 a 。所以最终,这个cd数组根据每一层的转换,就能变为:

一次过反爬虫的过五关斩六将-Ali0th

然后拼接dc就是最终我们要的结果了啦啦啦:

一次过反爬虫的过五关斩六将-Ali0th

以上所述就是小编给大家介绍的《一次过反爬虫的过五关斩六将-Ali0th》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

云计算安全与隐私

云计算安全与隐私

Tim Mather、Subra Kumaraswamy、Shahed Latif / 刘戈舟、杨泽明、刘宝旭 / 机械工业出版社华章公司 / 2011-6 / 65.00元

《云计算安全与隐私》可以使你明白当把数据交付给云计算时你所面临的风险,以及为了保障虚拟基础设施和网络应用程序的安全可以采取的行动。本书是由信息安全界知名专家所著,作者在书中给出许多中肯的忠告和建议。本书的读者对象包括:IT职员、信息安全和隐私方面的从业人士、业务经理、服务提供商,以及投资机构等。阅读本书你会了解直到现在还严重匮乏的云计算安全方面的详尽信息。 《云计算安全与隐私》主要内容包括:......一起来看看 《云计算安全与隐私》 这本书的介绍吧!

RGB转16进制工具
RGB转16进制工具

RGB HEX 互转工具

Base64 编码/解码
Base64 编码/解码

Base64 编码/解码

html转js在线工具
html转js在线工具

html转js在线工具