Python模拟微博登录:揭秘sp与nonce加密策略

5 下载量 129 浏览量 更新于2024-08-29 收藏 1.31MB PDF 举报
本篇文章主要介绍了如何使用Python编写模拟微博登录功能的爬虫,针对的是微博网站(<https://weibo.com/>)。文章分为两个主要部分: 一、请求分析与登录过程 1. 首先,作者强调了登录过程的关键步骤,即找到登录页面,确定用户名和密码输入区域,并观察登录请求后的响应数据,包括如`exectime`、`nonce`、`pcid`、`pubkey`等参数。其中,`exectime`表示请求执行时间,`nonce`用于加密,`pcid`可能是用户设备标识,`pubkey`用于RSA加密。 2. 然后,作者提到`servertime`(服务端时间)和`rsakv`(可能用于进一步加密的密钥),以及`sp`(需要加密的参数)的变化,指出`servetime`是基于当前时间戳,而`sp`使用RSA或SHA1加密。`su`参数是通过Base64加密的,但具体生成方法需要进一步分析。 二、加密方式的寻找与实现 1. 调试JavaScript代码是关键步骤,通过设置断点追踪登录过程中的函数调用,作者发现`sp`使用了RSA加密,可以通过网络请求获取到微博的RSA公钥,然后在Python代码中应用这些加密算法。 2. 对于`nonce`,作者发现它并不是每次登录时都会从服务器请求,而是本地JavaScript文件中动态生成的。因此,需要在浏览器环境中分析JavaScript代码,找到生成`nonce`的函数。该函数使用了`random`库,说明它可能基于某种随机生成算法。 3. 提供了Python代码片段来导入必要的库(`random`、`rsa`和`hashlib`),表明接下来将演示如何在Python中使用这些库来模拟加密过程。 总结来说,本文的核心知识点是理解微博登录过程中的加密机制,特别是`sp`和`nonce`的生成方式,并利用Python编程语言实现模拟登录。这涉及到JavaScript代码的调试、网络请求的分析、以及RSA和Base64等加密技术的应用。对于想要学习和实践Python爬虫的同学,这部分内容是非常实用的。