Python爬虫 __jsl_clearance解密

本文介绍了一种使用Python(requests、execjs和hashlib库)解密特定网站(如customs.gov.cn)中的jsl_clearance值的方法,通过分析HTTP响应头和执行JavaScript代码获取cookie值。
摘要由CSDN通过智能技术生成
本次分享的是__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)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值