先上链接
aHR0cHM6Ly93d3cubWlpdC5nb3YuY24v
网站分析
发现发起三次请求
第一次,状态码521,Set-Cookie了一个jsluid
第二次,状态码依然是521,但是cookie里面多了一个jsl_clearance
第三次,状态码200,正确返回了网页,cookie里的jsl_clearance值有变化
欢迎关注我的公众号:
代码实现
第一次请求发现返回了一个这个
<script>document.cookie=('_')+('_')+('j')+('s')+('l')+('_')+('c')+('l')+('e')+('a')+('r')+('a')+('n')+('c')+('e')+('_')+('s')+('=')+(+!+[]+'')+(-~[5]+'')+(-~[2]+'')+((1+[2])/[2]+'')+(-~0+'')+(~~[]+'')+(1+3+'')+((1+[0])/[2]+'')+(2+'')+([3]*(3)+'')+('.')+(([2]+0>>2)+'')+(6+'')+(-~false+'')+('|')+('-')+(-~{}+'')+('|')+('o')+('n')+('P')+('g')+(7+'')+(+!+[]+'')+(+!+[]+'')+('R')+('r')+('g')+('x')+('c')+('%')+(-~1+'')+('F')+('k')+('s')+('y')+('A')+('f')+('t')+('s')+('m')+('A')+('Y')+('g')+('z')+('x')+('g')+('%')+((1|2)+'')+('D')+(';')+('m')+('a')+('x')+('-')+('a')+('g')+('e')+('=')+(3+'')+(3+3+'')+(~~''+'')+((+[])+'')+(';')+('p')+('a')+('t')+('h')+('=')+('/');location.href=location.pathname+location.search</script>
乍一看,好像看不懂,其实很简单,正则取出document.cookie=里面的值,然后用execjs.eval一下
js_clearance = re.findall('cookie=(.*?);location', r.text)[0]
result = execjs.eval(js_clearance).split(';')[0]
print(result)
就看到了如下返回值,这就很像上面第二次请求,cookie里所带的值了
__jsl_clearance_s=1636104529.561|-1|onPg711Rrgxc%2FksyAftsmAYgzxg%3D
接下来带着这个cookie值再次请求,发现返回了一个,ob混淆过的一个js
,拉到最下面,可以看到一个go函数
多试几次,经过分析后,可以看到总共会有三种加密方式md5,sha1,sha256,其js逻辑呢,分析后用python重写后如下
go = json.loads(re.findall(r'};go\((.*?)\)</script>', resp.text)[0])
for i in range(len(go['chars'])):
for j in range(len(go['chars'])):
vales = go['bts'][0] + go['chars'][i] + go['chars'][j] + go['bts'][1]
if go['ha'] == 'md5':
ha = hashlib.md5(vales.encode()).hexdigest()
elif go['ha'] == 'sha1':
ha = hashlib.sha1(vales.encode()).hexdigest()
elif go['ha'] == 'sha256':
ha = hashlib.sha256(vales.encode()).hexdigest()
if ha == go['ct']:
__jsl_clearance_s = vales
__jsl_clearance_s结果如下,这就跟上面网页分析出来的结果一样了
__jsl_clearance_s=1636105579.528|0|PyxQU6RjnCxtJJHVtwXAwvRpoIQ%3D
最后再带着这个cookie值去请求,就可以得到想要的内容了