本次分享的是__jsl_clearance解密
import time
import requests
import execjs
import hashlib
import json
from requests.utils import add_dict_to_cookiejar
import re
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.7",
"Accept-Encoding": "gzip, deflate",
"Accept-Language": "zh,zh-CN;q=0.9",
"Cache-Control": "no-cache",
'User-Agent': 'Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1468.0 Safari/537.36'
}
def getCookie(data: dict):
chars = len(data['chars'])
for i in range(chars):
for j in range(chars):
clearance = data['bts'][0] + data['chars'][i] + data['chars'][j] + data['bts'][1]
encrypt = None
if data['ha'] == 'md5':
encrypt = hashlib.md5()
elif data['ha'] == 'sha1':
encrypt = hashlib.sha1()
elif data['ha'] == 'sha256':
encrypt = hashlib.sha256()
encrypt.update(clearance.encode())
result = encrypt.hexdigest()
if result == data['ct']:
return clearance
def getResponse(url: str):
session = requests.session()
res1 = session.get(url, headers=headers)
print(res1.text)
jsl_clearance_s = re.findall(r'cookie=(.*?);location', res1.text)[0]
# 执行js代码
jsl_clearance_s = str(execjs.eval(jsl_clearance_s))
key = jsl_clearance_s.split('=')[0]
value = jsl_clearance_s.split('=')[1].split(';')[0]
# add_dict_to_cookiejar方法添加cookie
add_dict_to_cookiejar(session.cookies, {key: value})
res2 = session.get(url, headers=headers)
# 提取go方法中的参数
data = json.loads(re.findall(r';go\((.*?)\)', res2.text)[0])
jsl_clearance_s = getCookie(data)
# 修改cookie
add_dict_to_cookiejar(session.cookies, {key: jsl_clearance_s})
res1 = session.get(url, headers=headers)
return res1
if __name__ == '__main__':
url = "http://www.customs.gov.cn/"
html = getResponse(url=url).content.decode("utf-8")
print(html)