• 爬虫----js逆向某宝h5的sign参数


    抓包

    • 开发者工具中抓到包,发现有我们需要的商品数据。

    在这里插入图片描述

    分析构成的参数

    • 对比两次请求发现,变化的参数只有两个:

    t参数: 一眼就看出来是一个13位时间戳
    sign参数:貌似是一些参数经过哈希加密算法之后生成的32位小写加密参数。

    具体sign参数还需要去js分析

    在这里插入图片描述

    • 直接查看请求使用到的堆栈,请求使用的堆栈从下至上

    在这里插入图片描述

    • 进入最近一次调用的js文件里面,试试直接搜索一下sign参数,发现只有这条是在给sign赋值

    在这里插入图片描述
    在这里插入图片描述

    • 打上断点刷新重走逻辑,看看入参,来验证之前的猜想,j这个参数就是请求时的sign参数。

    在这里插入图片描述
    在这里插入图片描述

    • 打印一下入参的明文
    1. 对比两次请求的入参

       g参数和d.token没有变化,g参数对比之后发现为参数中的appkey,d.token为cookie中的_m_h5_tk以_分割后的字符串。
       
       i参数为时间戳和参数中的t参数是一样的时间戳。
       
       c.data根据商品不同,id会变化,为商品的id,也是参数中的data
      
      • 1
      • 2
      • 3
      • 4
      • 5

    在这里插入图片描述
    在这里插入图片描述

    验证猜想

    • 现在搞清楚了入参,找个md5的加密工具,验证一下之前的猜想,是否是md5哈希加密?

      上一篇做的md5加密,跟这个很像,可以直接去百度搜索一下md5的在线加密,验证一下

    1. 发现生成的不一样

    在这里插入图片描述

    在这里插入图片描述

    1. 查看参数是否输入正确,鼠标放在断点暂停的地方发现,exParams中的反斜杠为一个,而控制台打印出来的参数反斜杠是两个,应该是被转义了。
      在这里插入图片描述

    2. 参数修改为一个反斜杠,再次加密,发现和js生成的一样,证明之前猜想的md5加密是正确的。

    在这里插入图片描述

    1. 如果这一步还是不能成功,那就要进入h这个函数,去看具体是怎么生成的sign了,如果不想分析,可以直接用python的一些调用js的模块直接去调用网页中的js。(逆向就是要多尝试)

    在这里插入图片描述

    code

    加密参数分析完毕,使用python实现md5加密,还原sign😎

    第一次请求令牌为空时就是cookies中没有_m_h5_tk , response的cookies中就会有一个_m_h5_tk

    在这里插入图片描述

    在这里插入图片描述

    仅供学习交流使用,非商业用途,如有侵权,请联系我删除!!!

  • 相关阅读:
    学习笔记(13)ES6新特性
    【无公网IP】在公网环境下Windows远程桌面Ubuntu 18.04
    vue 与 swiper结合使用时,swiper效果失效
    SpringCloud Feign异步调用传参问题
    [ArcPy百科]第一节:何为arcpy
    外包干了2个月,技术退步明显了...
    软件需求开发的时间管理方案
    【LeetCode】795.区间子数组个数
    龙芯3A5000上安装微信
    C/C++跨平台构建工具CMake-----在C++源码中读取CMakeLists.txt配置文件中的内容
  • 原文地址:https://blog.csdn.net/bjsyc123456/article/details/126927823