python最新h5st4.9.1调用源码(2025-10-25)

news2024/11/25 16:23:24

废话不多说,直接上源码,需要技术支持的私。

一、调用js方法:

# -*- coding: utf-8 -*-
"""
-------------------------------------------------
    Author: byc6352
    File: jdh5st.py
    Time: 2024/10/25 08:03
    Technical Support:byc6352 or metabycf or 39848872 or t:byc01
-------------------------------------------------
    Change : 2024/10/25 08:03
-------------------------------------------------
    Desc:
"""
import json
import random
import re
import subprocess
import time
from functools import partial

from curl_cffi import requests
from loguru import logger

subprocess.Popen = partial(subprocess.Popen, encoding="utf-8")
import execjs
import function
cookie=None
js = execjs.compile(open("./jd_h5st_encrypt.js", "r", encoding="utf-8").read())

def load_cookie():
    global cookie
    try:
        text=function.loadfromfile("cookie.txt")
        cookie=function.cookies_raw_to_dic(text)
        ##print(cookie)
    except Exception as e:
            print('do_GET:error:', e)
            print(e.__traceback__.tb_frame.f_globals["__file__"])  # 发生异常所在的文件
            print(e.__traceback__.tb_lineno)  # 发生异常所在的行数

def gen_pvid():
    e = int(time.time() * 1000)
    uuid_template = "xxxxxxxxxxxx4xxxyxxxxxxxxxxxxxxx"
    uuid = list(uuid_template)
    for i, char in enumerate(uuid):
        if char in ['x', 'y']:
            n = int((e + 16 * random.random()) % 16)
            e = e // 16
            if char == 'x':
                uuid[i] = hex(n)[2:]
            elif char == 'y':
                uuid[i] = hex((3 & n | 8) % 16)[2:]
    return ''.join(uuid)


def get_algo(ai):
    fp = js.call('generateVisitKey')
    localTk = js.call("localTk", fp)
    expandParams = js.call('expandParams', ai, fp)
    headers = {
        "authority": "cactus.jd.com",
        "accept": "application/json",
        "content-type": "application/json",
        "referer": "https://search.jd.com/",
        "user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36"
    }
    url = "https://cactus.jd.com/request_algo"
    data = {
        "version": "4.9",
        "fp": fp,
        "appId": ai,
        "timestamp": int(time.time() * 1000),
        "platform": "web",
        "expandParams": expandParams,
        "fv": "h5_file_v4.9.1",
        "localTk": localTk
    }
    data = json.dumps(data, separators=(',', ':'))
    response = requests.post(url, headers=headers, data=data).json()
    tk = response["data"]["result"]["tk"]
    algo = response["data"]["result"]["algo"]
    rd = re.findall("rd='(.*?)';", algo)[0]
    algo = re.findall(r"algo\.(.*?)\(", algo)[0]
    return fp, algo, tk, rd


def get_price(sku):
    api_appid = 'fb5df'
    # fp, algo, tk, rd = get_algo(api_appid)
    # logger.debug(f"{api_appid} fp:{fp} algo:{algo} tk:{tk} rd:{rd}")
    fp = "ccsso21xkrcdsso4"
    algo = "MD5"
    tk = "tk03wb29d1c3818nbBzsTa1fMY0YpJ-a1oVdzNECsY-6qpvJOazfg8PX89fpcfliGs5xSd81_dHpGCY3wdXM8tk1GaAT"
    rd = "3nPfbbv0qakI"
    ts = str(int(time.time() * 1000))
    headers = {
        "authority": "api.m.jd.com",
        "accept": "application/json, text/javascript, */*; q=0.01",
        "referer": "https://item.jd.com/",
        "user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36",
        "x-referer-page": "https://item.jd.com/10109684762090.html",
        "x-rp-client": "h5_1.0.0"
    }
    ##if cookie!=None:
       ## headers["cookie"]=cookie
    cookies = {
        "__jdu": "17293987875691788438336",
        "areaId": "5",
        "PCSYCityID": "CN_130000_130400_0",
        "shshshfpa": "9a5434d1-55dc-0b17-afb7-517c7299dd2e-1729398790",
        "shshshfpx": "9a5434d1-55dc-0b17-afb7-517c7299dd2e-1729398790",
        "pinId": "aKKFIx5WU89-6cLG7RSx1LV9-x-f3wj7",
        "pin": "jd_7d020ac3ec434",
        "unick": "%E5%A6%96%E5%93%A5%E5%93%A56",
        "ceshi3.com": "203",
        "_tp": "S6HK9Ih%2B7UrKGpY9ovXQfMq0WHQ%2FwHGym2ktIj59trg%3D",
        "_pst": "jd_7d020ac3ec434",
        "source": "PC",
        "platform": "pc",
        "jcap_dvzw_fp": "lgBMB_apUig7S62c6AvSfP1hV5HL7Fu-cZvU37TRpJ64aiUg3IsxH4AuPAZpKuTrji0U7nguXGhlqgP0U0mNkg==",
        "__jdv": "85788037%7Ciosapp%7Ct_335139774%7Cappshare%7CWxfriends_shareid101031fedc18929f26de611fe262f282c89ab92d17295286322613_shop_none%7C1729564673140",
        "3AB9D23F7A4B3CSS": "jdd03FTRIVEJ57GI3RV367OZTPMDFSHECQZZQ752F5TAERK77C2FNCI6XCDDVZFB445VUAYU4A7ILASDV6TO5SQGW5TNQ5EAAAAMSWMNMGJYAAAAADXF3KQK6YPSOEUX",
        "_gia_d": "1",
        "thor": "8718533D55F74202EDC9C17A7E55808D7856B964B017DF0C1F2C996EFCAE2E9B487EA279BB9C4AF8627984349130413A310A59A68301703BAB5EEC08235787CFF620274881E0F6254EB4A4B396CFAD3F1AC43BC09558540E0B0ECE85645B9EC2E2C855B13AED1435DF7560BFF3C22D523D64EE3E9485520D9810315A939E3DC5F1A5E8209A25FA7D8BEC86554A81A5EDF1AC17418AF088F3655E7C54717A222F",
        "light_key": "AASBKE7rOxgWQziEhC_QY6ya74pU_faxeaBQMG0ouMjvAQAf0N3WNJ56y5B2k3P51ls6dAAG",
        "3AB9D23F7A4B3C9B": "FTRIVEJ57GI3RV367OZTPMDFSHECQZZQ752F5TAERK77C2FNCI6XCDDVZFB445VUAYU4A7ILASDV6TO5SQGW5TNQ5E",
        "mt_xid": "V2_52007VwMUUVVaWlMZQB9YAm8DFFtUXVBTHUsebAUyV0ZbWAxVRhZBHwsZYlYRB0EIBw4bVU4MUDAKFgVbUVVSGXkaXQZiHxJTQVtRSx9NEl8HbAYVYl9oUmocSRBfAG4LFFFcUGJfHkAf",
        "token": "ad66c84aac27a21c59e6c2814cf2ccb8,3,960878",
        "jsavif": "1",
        "__jda": "181111935.17293987875691788438336.1729398788.1729564610.1729581727.3",
        "__jdb": "181111935.4.17293987875691788438336|3.1729581727",
        "__jdc": "181111935",
        "flash": "3_wvbkgYLTyY4F9-gCClJhlyo1Mw1QdzEbrk0lxRVQjGHxB0O1D7nYf6Y8IV02Vz6LkkRL8Q12x0YuMeVgdoadMLq4BD7dOniCaNTsUMDeUGnLsSCuvinpGoXDrM0R8i9t_bXwlNT9gDDqBmSB-6Gk3ApkTokIkmpsuDoIX7zlrxByBr8-mw32-V**",
        "ipLoc-djd": "5-148-172-34120",
        "shshshfpb": "BApXSFfcUsPdAoprBp5vlox1-OAvJX2z0Bmt4gL9p9xJ1MrqzCYG2"
    }
    url = "https://api.m.jd.com/"
    body = {
        "skuId": sku,
        "cat": "1320,2641,2642",
        "area": "5_148_172_34120",
        "shopId": "12207507",
        "venderId": 12518117,
        "paramJson": "{\"platform2\":\"1\",\"colType\":0,\"specialAttrStr\":\"p0ppppppppppppppppppppppppp\",\"skuMarkStr\":\"00\"}",
        "num": 1,
        "bbTraffic": "",
        "canvasType": 1,
        "giftServiceIsSelected": ""
    }
    body = json.dumps(body, ensure_ascii=False, separators=(",", ":"))
    params = {
        "appid": "pc-item-soa",
        "functionId": "pc_detailpage_wareBusiness",
        "client": "pc",
        "clientVersion": "1.0.0",
        "t": ts,
        "body": body,
        ##"x-api-eid-token": "jdd03KVN2BG6B6II3WXOWHUT4MPGOGMO3OQ5DZSTIKYF3HTHKBIBGSGGD47T45RYVHOSPZCKPB34ABDGB3YPJSTDLSRLIT4AAAAMR4V6C5XIAAAAACRGQDDWZH5LYI4X",
        "x-api-eid-token": "jdd03TBT6WE4WMF4PHCAWA4ARALVIPT5OMQ4BQRGPDAYOB2FRF4ZFI7PNNNYGOIDXKB4SG6RDGIOP7TPKAXVQ3DQUEP25G4AAAAMSWKE3LNQAAAAACLVFJYDTNARXWQX",
        "loginType": "3",
        "scval": sku,
        "uuid": "181111935.1726113890136215874918.1726113890.1726113890.1726129121.2"
    }
    h5st = js.call("get_H5st", body, ts, params["appid"], params["functionId"], api_appid, fp, algo, tk, rd)
    params["h5st"] = h5st
    logger.debug(f" H5st 结果:{h5st}")
    response = requests.get(url, headers=headers, cookies=cookie, params=params)
    ##response = requests.get(url, headers=headers,  params=params)
    print(response.status_code)
    logger.debug(response)
    logger.debug(response.text)
    # logger.info(response.json()["price"])

load_cookie()
if __name__ == "__main__":
    ##js = execjs.compile(open("./jd_h5st_encrypt.js", "r", encoding="utf-8").read())
    skus = ['100055840709', '100021136758', '100032586491', '34533031087', '100058167024', '100082186087',
            '100077587929', '100036474892', '10056013758919', '100014805124', '100009497210', '10100720343444',
            '10079373721437', '58579400328', '10029555779444', '100043167344', '100020760933', '100113532463',
            '10047345306664', '100042256962', '100007157415', '100006529843', '10052077917985', '100060150951',
            '10053628602097', '1584883842', '10067842667839', '10026365639431', '10099221533185', '100052602673',
            '10053628602097', '10085996671578', '10048614350496', '10084090773366', '569091', '100008631319',
            '10087691476163', '100012886904', '10026365639431', '100014805100', '100062571977', '100123529044']
    for i, sku in enumerate(skus):
        logger.info(f'第============================={i}次==============================')
        get_price(sku)
        time.sleep(30)

二、效果

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2223474.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Python 20个必学实例盘点

Python 1. 计算器程序: def add(x, y): return x ydef subtract(x, y): return x - ydef multiply(x, y): return x * ydef divide(x, y): try: return x / y except ZeroDivisionError: print("除数不能…

基于SpringBoot+Vue+uniapp微信小程序的文玩销售小程序的详细设计和实现

项目运行截图 技术框架 后端采用SpringBoot框架 Spring Boot 是一个用于快速开发基于 Spring 框架的应用程序的开源框架。它采用约定大于配置的理念,提供了一套默认的配置,让开发者可以更专注于业务逻辑而不是配置文件。Spring Boot 通过自动化配置和约…

【网路原理】——HTTP状态码和Postman使用

阿华代码,不是逆风,就是我疯 你们的点赞收藏是我前进最大的动力!! 希望本文内容能够帮助到你!! 目录 引入: 一:状态码 1:状态码标准 2:常见的状态码 ①2…

依托微信小程序,畅享校园二手交易

作者介绍:✌️大厂全栈码农|毕设实战开发,专注于大学生项目实战开发、讲解和毕业答疑辅导。 🍅获取源码联系方式请查看文末🍅 推荐订阅精彩专栏 👇🏻 避免错过下次更新 Springboot项目精选实战案例 更多项目…

普通数组矩阵

文章目录 普通数组一、最大子数组二、合并区间三、轮转数组四、除自身以外数组的乘积五、缺失的第一个正数 普通数组 一、最大子数组 题目链接 方法一:动态规划 方法二:前缀和(有点难理解) 二、合并区间 题目链接 三、轮…

Linux中部署Mysql保姆级教程

一、版本说明 本文的版本号是5.7.30,5.6及以上版本的MySQL要求Linux系统虚拟内存不能小于1G,否则MySQL可能无法运行。 二、安装前的准备 2.1查看系统自带的Mariadb rpm -qa|grep mariadb 安装mysql为什么需要卸载mariadb: 以前的Linux系统中数据库大部分是mysql,…

android 利用adb将apk安装到模拟器中的方法

1、安装完成了sdk以后,会有一个工具集,里面有一个adb.exe,这个文件可以查看模拟器列表,及安装apk到模拟器中。 可以将这个目录加到环境变量中,这样就不用定位到目录, 然后使用adb命令了。 2、这里我们先定…

纯血鸿蒙:国产操作系统的崛起与安卓的本质区别

华为正式发布纯血鸿蒙(Harmony OS 5.0)标志着中国科技产业进入了一个崭新的时代。随着这一操作系统的推出,中国不仅在消费电子领域迎来了一个新的操作系统生态,更是加强了中国在全球科技领域的发言权。本文将深入探讨纯血鸿蒙与安…

win10怎么卸载软件干净?电脑彻底删除软件的方法介绍,一键清理卸载残留!

电脑上经常会下载各种各样的软件来协助我们办公,不同的软件能够满足不同的需求。 但是不少软件可能使用频率没有那么高,甚至完全不使用。这个时候就需要将这些不常用的电脑软件卸载掉了,卸载软件能够释放一定的存储空间,提高电脑…

封装echarts组件,即插即用(附源码)

前言&#xff1a;最近一个项目刚收工&#xff0c;分享一个常用的封装echarts的组件。 一、直接上组件代码 <template><el-card class"echart-card" shadow"hover"><template v-slot:header><div class"card-header">&…

[网络协议篇] UDP协议

文章目录 1. 简介2. 特点3. UDP数据报结构4. 基于UDP的应用层协议5. UDP安全性问题6. 使用udp传输数据的系统就一定不可靠吗&#xff1f;7. 基于UDP的主机探活 python实现 1. 简介 User Datagram Protocol&#xff0c;用户数据报协议&#xff0c;基于IP协议提供面向无连接的网…

郑州地铁携手百望云,以数电票平台升级打造坚实便民惠民服务能力

随着城市的快速发展&#xff0c;地铁成为很多大城市市民出行的主力工具。为民众出行提供安全、便捷、合规的出行服务&#xff0c;成为相关机构的重点工作。 近日&#xff0c;郑州地铁集团有限公司&#xff08;以下简称“郑州地铁”&#xff09;与百望云达成合作&#xff0c;开…

免杀对抗—特征码修改花指令资源修改加壳保护

前言 今天主要是讲这个特征码定位以及这个花指令&#xff0c;资源修改这个东西其实有点投机取巧啦&#xff0c;至于这个加壳之前也讲过了&#xff0c;直接工具搞就行。那么什么是特征码定位呢&#xff0c;众所周知&#xff0c;杀软是通过特征码来检测我们的exe是否是后门的&am…

老外说“奶茶”不叫“milk tea”?!那叫什么?柯桥英语口语学习生活日语培训

奶茶的英文怎么说&#xff1f; 其实&#xff0c;“奶茶”在英文中有多种表达方式&#xff0c;但最常见且准确的应该是“tea with milk”。这种表达方式直接描述了奶茶的本质——茶与牛奶的结合。当然&#xff0c;你也可以用“milky tea”来表达&#xff0c;但相对来说&#xf…

探索自然之美:SpringBoot驱动的安康旅游网站开发

第一章 绪论 1.1 研究现状 时代的发展&#xff0c;我们迎来了数字化信息时代&#xff0c;它正在渐渐的改变着人们的工作、学习以及娱乐方式。计算机网络&#xff0c;Internet扮演着越来越重要的角色&#xff0c;人们已经离不开网络了&#xff0c;大量的图片、文字、视频冲击着我…

基于SpringBoot的酒店管理系统的设计与实现

摘要 酒店管理系统的设计旨在提供快捷高效的住宿资源管理方案&#xff0c;帮助管理员实现对酒店内房间、客户信息、订单的全方位管理&#xff0c;同时为用户提供便捷的预订和查询功能。本系统基于Spring Boot框架&#xff0c;结合前端框架和数据库设计&#xff0c;构建一个用户…

基于双目立体视觉的图像匹配与测距

基于双目立体视觉的图像匹配与测距 Image-matching-and-ranging-based-on-binocular-stereo-vision 摘要 双目立体视觉是计算机视觉范畴的核心之一&#xff0c;它利用双目相机来获得目标物体的图像&#xff0c;经过物体图像处理之后得到目标物体所在场景环境的三维信息&…

邮件系统改造升级,让办公更智能、更高效!

在当今的商业环境中&#xff0c;电子邮件扮演着至关重要的角色&#xff0c;它是企业沟通的桥梁和信息传递的枢纽。然而&#xff0c;随着企业规模的扩大和业务需求的增长&#xff0c;传统的电子邮件系统可能会变得力不从心&#xff0c;无法满足日益增长的沟通需求。因此&#xf…

【C#】WPF 依赖属性,PasswordBox中的Password属性绑定

1. 关于依赖属性 <TextBox x:Name"sourceTBox" /> <TextBlock x:Name"tb" Text"{Binding Text,ElementNamesourceTBox}" />源对象&#xff1a; TextBox目标对象&#xff1a; TextBlock目标属性&#xff1a; TextBlock -> Text …

多个立方体盒子组成

效果&#xff1a; 知识了解&#xff1a; 在同一水平上&#xff0c;盒子经纬度计算&#xff1a;经度有误差&#xff0c;纬度没有误差 纬度计算&#xff1a;lat50/111320 约等于0.000449 经度计算&#xff1a;lon50/111320*cos(纬度) 约等于0.000519 一个立方体&#xff1a; // 添…