前几年很火的一个web端免费加密,现在也还能遇到,主要就是访问量词,第一次获取一个返回cookie,第二次根据第一次返回cookie生成的新的cookie,然后带上这个cookie在访问就行了。
关于这点,已经有很多人做了解析1,随便搜一下就能搜到,所以这里就不展开说了,直接上代码吧。注意cookie是每次一换的,也就是meigecookie都只能使用一次。
import execjs
import requests
import tool
'''加速乐(也就是cookie的表头中含有jsl的),加速乐是中国领先的 互联网安全 提供商 知道创宇 推出的一款在线免费网站 CDN 加速、网站安全防护平台。
致力于系统化解决网站访问速度过慢及网站反黑客问题。三次获取cookie后才能正常访问'''
def get_cookie(url, proxies=None):
cookies={}
# 第一次请求,获取第一次cookie
response = requests.get(url, verify=False, timeout=10, proxies=proxies)
# 上传第一次获取的cookie
cookies.update(response.cookies)
content = re.search(r'document.cookie=(.*);location.hre', response.text).group(1)
content_remove = execjs.eval(content).split(';')[0].split('=')[1]
# 第二次上传cookie
cookies['__jsl_clearance_s'] = content_remove
# 第二次请求获取cookie,替换shijianc戳
response = requests.get(url, cookies=cookies, verify=False, timeout=10, proxies=proxies)
print(response)
# 正则提取解密用到的字典
datas = re.findall(r';}};go\((.*?)\)</script>', response.text)[0]
# 解密代码
content_js = '''var CryptoJS = require('crypto-js');
var hash = {
'md5': function (a) {
return CryptoJS.MD5(a).toString()
},
'sha1': function (a) {
return CryptoJS.SHA1(a).toString()
},
'sha256': function (a) {
return CryptoJS.SHA256(a).toString()
}
}
data = goooo;
function decrypt_jsl_cookie() {
var chars = data["chars"]["length"];
for (var i = 0; i < chars; i++) {
for (var j = 0; j < chars; j++) {
var cookie = data["bts"][0] + data["chars"]["substr"](i, 1) + data["chars"]["substr"](j, 1) + data["bts"][1];
if (hash[data['ha']](cookie) === data["ct"]) {
return [data['tn'],cookie]
}
}
}
}
'''.replace('goooo', datas)
content_cookie = execjs.compile(content_js).call('decrypt_jsl_cookie')
# 将第二次获取的cookie上传到cookie字典
cookies['__jsl_clearance_s'] = content_cookie[1]
cookies_str = [f'{keys}={values};' for keys, values in cookies.items()]
cookies = ''.join(cookies_str)
return cookies
# 目标url
url = 'https://www.example.com'
cookies = get_cookie(url)
print(cookies)
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.163 Safari/537.36'
}
headers['Cookie'] = cookies
# 第三次请求,获取正常网页
response3 = requests.get(url, verify=False, headers=headers, timeout=10, proxies=proxies)
print(response3.text)