0%

2020-09-03加速乐详解

起因是作者加入爬群的朋友在群里说工商网加速乐又改版了

第一次请求

请求结果如图
avatar

我擦,这是什么鬼玩意,状态码521还可以接受(一般来说加速乐的标识就是状态码521),这些括号是什么鬼玩意,仔细分析一波

关建代码块
1
2
document.cookie  
location.href=location.pathname+location.search

基本上可以断定为在页面写入一个cookie并且跳转到另外的一个网站
document.cookie 是给浏览器加一个cookie
location.href 是跳转另外一个网站

网页的控制台分析一波

如图
avatar

可以看到 前两个请求的状态码为521 第三请求开始才是200
可以断定第一个请求521是正确的

分析一波第二个521请求

如图 avatar
可以看到有两个cookies 当中有一个cookie 已经知道了是第一个请求体内容写入进去了
还有一个哪里来的

分析第一个521请求

如图 avatar
如图所示 是 set-cookie写入进去的

代码请求第二个521返回结果分析

如图 avatar

可以看到代码被混淆了

copy 出来放到编译器中分析下

如图 acatar

可以看到是 在最后调用的go 传进了一些参数,然后开始一点点的分析,需要一点点的看.

分析最后一个请求

如图 avatar
可以看到这个请求需要携带的cookie和第二个请求是基本上一样,但是仔细分析一波肯定没那么简单,发现 __jsl_clearance这个是不一样的

九成是第二个请求结果生成出来的

解析第二请求结果,这里留个小的坑,直接贴出代码去分析联系下吧,小伙伴.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
# -*- coding: utf-8 -*-
# !/usr/bin/python3
# Author: zhou jun wei
# CreatDate: 2020/9/3 18:08

import requests,re,execjs,pytorchOcr
url = 'http://bj.gsxt.gov.cn/index.html'

headers ={
'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9',
'Accept-Encoding': 'gzip, deflate',
'Accept-Language': 'zh-CN,zh;q=0.9',
'Cache-Control': 'no-cache',
'Connection': 'keep-alive',
'Host': 'bj.gsxt.gov.cn',
'Pragma': 'no-cache',
'Upgrade-Insecure-Requests': '1',
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4183.83 Safari/537.36',
}

s = requests.session()
rep = requests.get(url, headers=headers)
print('第一次请求', rep.status_code)
html = rep.text
h = html.replace(';location.href=location.pathname+location.search</script>', '').replace('<script>document.', '')
print(h)
hhh = execjs.compile(h)
cookie_t = hhh.eval('cookie')
cookie_s = rep.headers['Set-Cookie']
headers['Cookie'] = cookie_t + ';' + cookie_s
rep_2 = requests.get(url, headers=headers)
print('第二次请求', rep_2.status_code, 'cookies 为', cookie_t )
html_2 = re.findall('<script>(.*?)</script>', rep_2.text, re.S)
he = html_2[0]
jj = """
window = {};var navigator = new Object();navigator.userAgent = "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36";window.navigator = navigator;
"""

# TODO 核心代码开始
he_1 = he[:he.find(')]);if')]+')]);'
yuesi = he_1[:he_1.rfind('var')]
cookies = he_1[he_1.rfind('var'):]
cookies = cookies[cookies.find('='):]
cookies = cookies.replace('=', 'cookies = ')
cookies = jj+yuesi+cookies+'return cookies[0]}'+he[he.find(';go('):]
# TODO 核心代码结束

hhdddd = execjs.compile(cookies)
cookies_t_2 = '__jsl_clearance='+hhdddd.eval('cookies')[0]+';'
headers['Cookie'] = cookies_t_2 + ';' + cookie_s

rep_3 = requests.get(url, headers=headers)
print('第三次请求', rep_3.status_code, 'cookies 为', cookies_t_2)
请我吃辣条吧~~~