python爬虫:喜马拉雅案例(破解sign值)

声明:

本文章中所有内容仅供学习交流使用,不用于其他任何目的,严禁用于商业用途和非法用途,否则由此产生的一切后果均与作者无关!

根据上一篇文章,我们破解了本网站的,手机号和密码验证,这篇文章我们继续破解sign加密值 python爬虫:喜马拉雅登录案例-CSDN博客

  • 我们今年天要破解的就是请求加密的sign值(箭头所指):

前置知识点:判断加密值可能采用哪种算法

  • 我们这个案例的sign值是:3dc612f47e51715f62e0d1ab66490637c16b4851
  • 这个值的长度是40,我们就可以找找网上的加密网站 SHA1 在线加密工具 | 菜鸟工具
  • 我们可以挨个试一下,只有sha1算法符合我们的sign,我们就推断sign值可能是使用的啥sha1算法加密

1. 找到我们之前的加密入口进行观察(找到signnature),我们判断应该与e有关

  • 在这一张图中,我们看到它定义了e,所以我们应该点进a.getSignature中查看js源代码代码如下
javascript 复制代码
var e = (0,
            a.getSignature)({
                account: n,
                password: i,
                nonce: t
            });
  • 悬浮鼠标,点进源码,查看源码,复制、粘贴源码:

2. 把代码复制到Pycharm中进行调试

  • 其中我们知道n,i是我们之前逆向出来的值,none可能是固定值、也有可能是变化值
  • 在调试过程中,代码出现了错误,如下图:
  • 我们就发现错误,但是读代码我们就可以看出,这个函数是将n、i、t的值今昔那个拼接,js代码可以处理,python也可以处理(这里我们就使用js进行处理把,有基础的可以试一试使用python去处理)
  • 解决了y的错误,我们需要解决d的错误(这里的d看着像是个固定值),我们直接把固定值拿过来

3.最后我们就破解了它的sign值

  • 代码如下:
javascript 复制代码
cryptoJs = require("crypto-js")

d = "WEB-V1-PRODUCT-E7768904917C4154A925FBE1A3848BC3E84E2C7770744E56AFBC9600C267891F"

function y(t) {
    var e = ""
        , r = Object.keys(t).sort((function (t, e) {
            return (t = t.charCodeAt(0)) - (e = e.charCodeAt(0))
        }
    ))
        , n = r.length;
    return r.forEach((function (r, o) {
            var i = t[r];
            e += "".concat(r, "=").concat(i),
            o < n - 1 && (e += "&")
        }
    )),
        e
}


function getSignature() {
    var t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {}
        , e = y(t) + "&" + d;
    return e.toUpperCase(),
        cryptoJs.SHA1(e.toUpperCase()).toString()
}

let n = "duWIGfpxabRcy5On5nyp37xK6r5JsL5vvzBC40SnqBl+ahQaKibOnJXeAWjOOWO8mOMQGnxxF1GyOpclRAdOkJvMb1ELSFqgFBbilqUtZipPJzzFyaRUMmbI+W9+m7VBDV1gAGwxUpj79M4x6ksl62QQrxm4k/IYybO9x9tZiFg="
let i = "Y2OZqFIfMpmKcIM98fOedsuwN0KHfvSlSQq6ugie7cYKH2F5hd3c6tXoKTzqeBkTKPo4qgbelCKLOvRdkShls0rBHuwEUZ4z2WJSyYSKG96natp7XhopHh27UUDGQX1BHSlNu8g0axx5WG9e9wEKKIhh2pz/LhbcZcBfAQ6qD9s="
let t = "0-29DAD105A65486c80bf90ec611605af8df9feffc8ec85e24e195efdc8e36d5"

// 测试
ret = getSignature({
    account: n,
    password: i,
    nonce: t
});

console.log(ret)
相关推荐
研☆香20 小时前
聊一聊前端的常见字 关键字
开发语言·前端·javascript
lancyu20 小时前
关于多轮对话机器人的上下文Token优化和解决方案
人工智能·python·深度学习·机器学习·chatgpt·机器人·prompt
草莓橙子碗21 小时前
Claude 使用指南
开发语言·python
工具分享21 小时前
陪跑跟品爆单AI选品助手,高效跟品会赔本吗?
人工智能·python
COOLMO研究AI21 小时前
Python 如何实现 AI API 的提示词(Prompt)版本管理与热更新
人工智能·python·prompt
老郑聊AI业财智造21 小时前
Transformer 技术架构与源码分析
人工智能·python·深度学习·语言模型·架构·transformer·软件工程
程序员三藏21 小时前
自动化测试用例编写详解
自动化测试·软件测试·python·功能测试·测试工具·职场和发展·测试用例
日光倾1 天前
TypeScript 随手记 —— 1
前端·javascript·typescript
230万光年的思念1 天前
分子动力学模拟参考文献
python
HongXu_CaiYi1 天前
0103-python相关-函数、文件
python