PC微信WDA算法

复制代码
WDA是H5ExtTransfer接口会用到的.在字段2中json请求内容名字为context_id
示例context_id: 33-9-141-W71dd244a27a4fe9a1762768491755

​​​​​​​完整代码
import hashlib
import time


def calculate_device_id():
    mac_all = "1C1B0D0E93981C1B0D0E9396"
    cpuidtxt = "3219913727" # 需要转有符号 -1077150721





    # 将无符号整数转换为有符号整数
    cpuid_unsigned = int(cpuidtxt)
    if cpuid_unsigned > 0x7FFFFFFF:  # 如果大于最大有符号整数
        cpuid_signed = cpuid_unsigned - 0x100000000
    else:
        cpuid_signed = cpuid_unsigned



    # 使用有符号整数参与运算
    cpuidtxt = str(cpuid_signed)
    # print(cpuidtxt)


    # 第一次MD5
    mac_bytes = bytes.fromhex(mac_all)
    macmd5 = hashlib.md5(mac_bytes).hexdigest().lower().replace(" ", "")

    # 组合字符串
    dev_md5 = macmd5 + cpuidtxt
    # print(dev_md5)


    # 第二次MD5
    dev_bytes = dev_md5.encode('utf-8')
    dev_hex = dev_bytes.hex()
    dev_md5 = hashlib.md5(bytes.fromhex(dev_hex)).hexdigest().lower().replace(" ", "")

    # 添加前缀并截取
    result = "W" + dev_md5
    return result[:17]


# 使用示例
if __name__ == "__main__":
    device_id = calculate_device_id()

    # 获取13位现行时间戳(毫秒级)
    timestamp = str(int(time.time() * 1000))

    # 组合设备ID和时间戳 33-9-141 传入参数固定的 只有部分业务 不同
    final_result = "33-9-141-" + device_id + timestamp

    print("context_id:", final_result)
相关推荐
掰头战士20 分钟前
深入了解JS原型及原型继承链机制
javascript
贵州数擎科技有限公司32 分钟前
霓虹沙尘暴的 Three.js 实现
前端·webgl
一只叁木Meow33 分钟前
电商 SKU 选择器:用算法实现优雅的用户交互
前端·javascript·算法
笔优站长35 分钟前
vue-sign-canvas v2 重构复盘:从 Vue 2 签名板到 Vue 3 + TypeScript 组件库
前端·vue.js
Aolith39 分钟前
事件驱动设计:我如何为校园论坛实现消息通知功能
前端·vue.js
代码煮茶40 分钟前
Vue3 Mock 数据实战 | 用 Mockjs + vite-plugin-mock 搭建前端独立开发环境
javascript·vue.js
JieE21240 分钟前
反转链表:从双指针到递归,吃透链表反转的核心逻辑
javascript·算法
yingyima40 分钟前
GitHub Actions 定时任务 schedule 踩坑实录:核心语法与实战技巧
前端
代码煮茶41 分钟前
CSS 单位完全指南:px、em、rem、vw、vh、clamp 详解
前端·css
KaMeidebaby1 小时前
卡梅德生物技术快报|PROTAC 药物降解蛋白原理及数据库平台开发全流程
前端·数据库·其他·百度·新浪微博