js逆向

js逆向-MD5

再进行数据爬取的过程中,有些时候浏览器访问服务端会带上一些加密的参数,爬虫模拟客户端操作,也需要携带加
密参数才可以正常获取数据,那这时候就需要我们去观察浏览器是怎么对这个数据加密的,根据不同的加密方式去编
写相关的代码。
浏览器获取加密参数基本都是执行了js代码,所以我们先需要分析加密的位置和加密的方式。

实现

找到目标url


image.png

post请求需要携带参数,并且不是携带表单数据,而是请求载荷,表单数据和请求载荷的区别在于请求的

  1. 表单数据:表单数据通常是通过HTML表单提交的用户输入数据。当用户在网页上填写表单并点击提交按钮时,
    浏览器会将表单数据封装为一个HTTP POST请求,并将数据作为请求体(Request Body)的一部分发送到服务
    器。表单数据通常使用键值对(Key-Value)的形式来表示,其中键表示表单字段的名称,值表示用户输入的内容。
image.png
  1. 请求载荷(Payload):请求载荷是指在HTTP请求中传递的任意数据。与表单数据不同,请求载荷可以是各种
    形式的数据,如JSON、XML、二进制数据等。


    image.png

    image.png

    并且通过抓取数据包可以发现第一页和第二页的请求中,u-sign的值不一样,也就意味着,如果使用python代码模拟
    请求,就没有办法使用同一个u-sign值去请求到结果


    image.png

    找u-sign加密数据的赋值位置
    image.png

    image.png

    此时都是匹配的位置,这么多我们可以通过给每个打断点的方式去判断这其中是否生效(断点的作用是在程序执行过

    程中暂停代码的执行,以便你可以检查程序的状态和调试代码。当程序执行到设置了断点的行时,调试器会中断程序
    的执行,并进入调试模式,此时你可以逐行执行、观察变量的值、检查程序的执行路径等)
    其中发现第三个是会执行的


    image.png

    image.png

    image.png

    image.png

    image.png

    与测试工具中的值是一致,所以确定这个u-sign的值就是通过md5加密出来的。通过以上分析,加密调用n函数,传
    入的是请求载荷中的字符串+&+9sasji5owng41irkisvtjhlxhmrysrp1固定的值 所以,可以使用python模拟过程

python代码实现

image.png

完整代码

image.png

image.png
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容