加速乐jsl破解

"""
1. 第一次请求网站,服务器返回的 Set-Cookie 中携带 jsluid_s 参数,将获取到的响应内容解密拿到第一次 jsl_clearance_s 参数的值;
2. 携带第一次请求网站获取到的 Cookie 值再次访问网站,将获取到的响应内容解混淆逆向拿到第二次 jsl_clearance_s 参数的值;
3. 使用携带 jsluid_s 和 jsl_clearance_s 参数的 Cookie 再次访问网站,获取到真实的 HTML 页面内容,继而采集数据。
参考:https://mp.weixin.qq.com/s/5N0Kp35XGJAuJSiIyLQt1g
"""
import execjs
import re
import requests
import json
import hashlib


cookies = {}

url = "https://yellowpage.luosi.com/companylist-cate-4.html"

headers = {
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/110.0.0.0 Safari/537.36 Edg/110.0.1587.41"
}


def str2dict(string: str):
    dic = {}
    for i in string.split(";"):
        k, v = i.split("=", 1)
        dic[k] = v
    return dic


def resolve_cookie(data):
    data = json.loads(data)
    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 {"__jsl_clearance_s": clearance}


def get_first_cookie():
    global cookies
    resp1 = requests.get(url, headers=headers)

    # __jsluid_s
    cookies.update(dict(resp1.cookies))

    # __jsl_clearance_s
    content = re.findall(r"document.cookie=(.*?);location", resp1.text)[0]
    jsl_clearance_s = execjs.eval(content).split(";")[0]
    cookies.update(str2dict(jsl_clearance_s))
    print(cookies)


def get_second_cookie():
    global cookies
    # 通过携带 jsluid_s 和 jsl_clearance_s 值的 cookie 获取第二层响应内容
    resp_second = requests.get(url=url, headers=headers, cookies=cookies)
    # 获取 go 字典参数
    go_params = re.findall(";go\((.*?)\)</script>", resp_second.text)[0]
    cookies.update(resolve_cookie(go_params))
    print(cookies)


if __name__ == "__main__":
    get_first_cookie()
    get_second_cookie()
    resp_third = requests.get(url=url, headers=headers, cookies=cookies)
    resp_third.encoding = "utf-8"
    print(resp_third.text)

posted @   二二二狗子  阅读(296)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
· 三行代码完成国际化适配,妙~啊~
历史上的今天:
2022-02-16 FastAPI 请求体 + 路径参数 + 查询参数
点击右上角即可分享
微信分享提示