声明:本文只用于学习研究,禁止用于非法用途,如有侵权,请联系我删除,谢谢!
大家好,我是村长~~
今天给大家分享一个常见的 cookie
加密反爬,这个加密以前也遇到过,不过只有一层
现在升级了,做了两层加密,不过看起来套路差不多,问题不太!
话不多说,地址如下:
aHR0cDovL3N3ai5oZWZlaS5nb3YuY24vY29udGVudC9jb2x1bW4vNjc5NDAyMT9wYWdlSW5kZXg9MQ==
浏览器打开抓包,熟悉的 512
响应码,以及 __jsl_clearance
这个 521 的请求浏览器是看不到响应内容的,需要借助 fiddler
来看
可以看到,在经过了三次请求之后,才得到正常的响应内容
第二次和第三次请求中的 cookie
都带上了 __jsl_clearance
且第二次与第三次的值也不相同
所以这两次返回的内容对 cookie
作了设置,我们来分析下
先来看第一次返回的 JS 代码
<script>document.cookie=('_')+('_')+('j')+('s')+('l')+('_')+('c')+('l')+('e')+('a')+('r')+('a')+('n')+('c')+('e')+('=')+(-~0+'')+(3+3+'')+(0+1+0+1+'')+(9-1*2+'')+(1+3+'')+(-~(4)+'')+(1+6+'')+(~~[]+'')+(9+'')+(0+1+0+1+'')+('.')+(1+2+'')+(1+3+'')+((1+[4]>>1)+'')+('|')+('-')+(-~{}+'')+('|')+('b')+('n')+('h')+(-~[6]+'')+('v')+('d')+('K')+(~~[]+'')+('o')+('n')+('b')+('R')+('I')+('r')+('M')+('c')+('x')+('p')+('E')+('%')+(-~1+'')+('F')+('%')+(1+1+'')+('F')+('D')+('r')+('q')+('y')+((1<<3)+'')+(~~{}+'')+('%')+(1+2+'')+('D')+(';')+('m')+('a')+('x')+('-')+('a')+('g')+('e')+('=')+(-~[2]+'')+((1+[2])/[2]+'')+(~~[]+'')+(~~false+'')+(';')+('p')+('a')+('t')+('h')+('=')+('/');location.href=location.pathname+location.search</script>
简单粗暴的对 cookie
进行了赋值,可直接执行看输出结果
这个很简单,可以看到这个第一次生成的 cookie
加入到了第二请求的 headers
里面
再来看第二次请求生成的 JS 代码
经过一定的混淆,我们借助还原工具直接还原
混淆还原工具:http://tool.yuanrenxue.com/decode_obfuscator
还原后很清楚了,主要是通过函数 go()
生成结果
直接运行,提示 window
未定义,补下相关的检测即可
补完之后运行,可以对比下结果
cookie
值一模一样
注意下这里总共有三种加密算法,分别是 md5 sha1 sha256
而采用哪种加密方式,是根据函数 go()
中的 ha
字段来选择哪种加密!
所以整个流程就是这样:
cookie
cookie
,经过 go()
再次生成 cookie
cookie
,返回正常 html
按这个流程写上代码,就能获取到正常的内容
源码地址:https://github.com/GoJerry/JSCrack/tree/master/__jsl_clearance