【Python3爬虫】最新的模拟登录新浪微博教程

本文涉及的产品
密钥管理服务KMS,1000个密钥,100个凭据,1个月
简介: 【Python3爬虫】最新的模拟登录新浪微博教程

一、写在前面

首先呢,由于之前重装系统,又要重新配置环境,然后还有一些别的事,导致我一直没有写爬虫了,不过现在又可以继续写了。

然后我这次说的模拟登录新浪微博呢,不是使用Selenium模拟浏览器操作,毕竟Selenium的效率是真的有些低,所以我选择用Python发送请求实现模拟登录,整个过程还算是有点小曲折吧。


二、开发环境

Windows10 + Python3.7 + Pycharm + Fiddler



三、页面分析

首先打开新浪微博,网址为:https://weibo.com/,这里我们只需要关注登录这一部分,如下图:


这样看是看不出来东西的,打开开发者工具,刷新一下页面,找找看有没有什么可疑的东西,然后就能找到下面这个包:


看到prelogin就能猜到应该是和登录有关的了,于是点击“Preview”查看具体内容:


到这里还是什么都看不出来,也不知道这些数据有什么用。这时候Fiddler就能派上用场了,首先打开Fiddler,然后在网页上输入用户名和密码并登录新浪微博,登录成功之后在Fiddler中找寻相关信息,可以找到下面这个url:

https://login.sina.com.cn/sso/login.php?client=ssologin.js(v1.4.19)

 点开之后可以看到携带了很多参数:


在这些参数中,我们需要关注的参数为:su,sp,servertime,nonce,pubkey,rsakv。其中su是用户名加密后的结果,sp是密码加密后的结果,servertime是一个时间戳,而剩余三个参数都来源于我们前面找到的prelogin.php。那么现在的问题就在于用户名和密码是怎么加密的?





小编给大家推荐一个学习氛围超好的地方,python交流企鹅裙:【611+530+101】适合在校大学生,小白,想转行,想通过这个找工作的加入。裙里有大量学习资料,有大神解答交流问题,每晚都有免费的直播课程


四、加密规则

首先还是找到prelogin.php,在它携带的参数中看到有一个ssologin.js,猜测它可能和加密规则有关系,所以找一下这个ssologin.js。


这里需要打开新浪的登录页面:https://login.sina.com.cn/,然后右键查看源码,再搜索“ssologin.js”,就能找到这个js文件了:

https://passport.sinaimg.cn/js/sso/ssologin.js

 打开之后搜索“username”,就能找到加密规则了,如下图(红框框出来的分别是用户名加密规则和密码加密规则):


用户名的加密是很简单的,使用base64加密就行了。但是对于密码的加密有一些复杂,虽然有if和else,但其实这里我们只需要看if部分:

request.servertime =me.servertime;

request.nonce =me.nonce;

request.pwencode ="rsa2";

request.rsakv =me.rsakv;

var RSAKey =new sinaSSOEncoder.RSAKey();

RSAKey.setPublic(me.rsaPubkey,"10001");

password = RSAKey.encrypt([me.servertime,me.nonce].join("\t") +"\n" + password)

密码的加密过程为:首先创建一个rsa公钥,公钥的两个参数都是固定值,第一个参数是prelogin.php中的pubkey,第二个参数是加密的ssologin.js文件中指定的10001,这两个值需要先从16进制转换成10进制,其中10001转成十进制为65537。最后再加入servertime时间戳和nonce字段,以及一个“\t”和一个"\n"进行进一步加密。



五、主要代码

 由于使用了rsa加密,所以需要使用导入rsa模块,没有安装的可以使用pip install rsa进行安装。

 这里主要说一下加密用户名和密码部分的代码:

# Base64加密用户名

def encode_username(usr):

    return base64.b64encode(usr.encode('utf-8'))[:-1]

需要注意的是要使用base64加密,需要先转换成字节型数据,而且加密之后末尾会多一个"\n",因此需要用[:-1]来去掉多余字符。

# RSA加密密码

def encode_password(code_str):

    pub_key = rsa.PublicKey(int(pubkey, 16), 65537)

    crypto = rsa.encrypt(code_str.encode('utf8'), pub_key)

    return binascii.b2a_hex(crypto)  # 转换成16进制

在加密密码的时候传入的这个code_str参数就是servertime + '\t' + nonce + '\n' + password得到的结果,而在整个加密过程完成之后要转换成16进制再返回。

但是做了这两步之后并没有真的登录微博,还需要提取链接并进行跳转,不过对于我们来说做到这一步就已经够了,我们只需要保存此时的Cookie就行了,为了验证这个Cookie是否有效,我还写了一段代码进行测试,这里就不放出来了。

相关文章
|
13天前
|
数据采集 JSON API
深入解析:使用 Python 爬虫获取淘宝店铺所有商品接口
本文介绍如何使用Python结合淘宝开放平台API获取指定店铺所有商品数据。首先需注册淘宝开放平台账号、创建应用并获取API密钥,申请接口权限。接着,通过构建请求、生成签名、调用接口(如`taobao.items.search`和`taobao.item.get`)及处理响应,实现数据抓取。代码示例展示了分页处理和错误处理方法,并强调了调用频率限制、数据安全等注意事项。此技能对开发者和数据分析师极具价值。
|
1月前
|
JSON 数据可视化 API
Python 中调用 DeepSeek-R1 API的方法介绍,图文教程
本教程详细介绍了如何使用 Python 调用 DeepSeek 的 R1 大模型 API,适合编程新手。首先登录 DeepSeek 控制台获取 API Key,安装 Python 和 requests 库后,编写基础调用代码并运行。文末包含常见问题解答和更简单的可视化调用方法,建议收藏备用。 原文链接:[如何使用 Python 调用 DeepSeek-R1 API?](https://apifox.com/apiskills/how-to-call-the-deepseek-r1-api-using-python/)
|
8天前
|
机器学习/深度学习 数据采集 数据可视化
Python/Anaconda双方案加持!Jupyter Notebook全平台下载教程来袭
Jupyter Notebook 是一款交互式编程与数据科学分析工具,支持40多种编程语言,广泛应用于机器学习、数据清洗和学术研究。其核心优势包括实时执行代码片段、支持Markdown文档与LaTeX公式混排,并可导出HTML/PDF/幻灯片等格式。本文详细介绍了Jupyter Notebook的软件定位、特性、安装方案(Anaconda集成环境与原生Python+PIP安装)、首次运行配置及常见问题解决方案,帮助用户快速上手并高效使用该工具。
|
7天前
|
数据采集 XML JavaScript
Python爬虫:从人民网提取视频链接的完整指南
Python爬虫:从人民网提取视频链接的完整指南
|
13天前
|
SQL 关系型数据库 MySQL
milvus-use教程 python
本项目参考vanna项目,获取数据库元数据和问题SQL对,存入Milvus向量数据库,并进行相似性检索。采用m3e-large嵌入模型,通过DatabaseManager类实现数据库连接持久化,MilvusVectorStore类封装了Milvus操作方法,如创建集合、添加数据和查询。项目提供init_collections、delete_collections等文件用于初始化、删除和管理集合。所用Milvus版本较新,API与vanna项目不兼容。 [项目地址](https://gitee.com/alpbeta/milvus-use)
93 9
|
13天前
|
数据采集 XML 存储
Python爬虫实战:一键采集电商数据,掌握市场动态!
这个爬虫还挺实用,不光能爬电商数据,改改解析规则,啥数据都能爬。写爬虫最重要的是要有耐心,遇到问题别着急,慢慢调试就成。代码写好了,运行起来那叫一个爽,分分钟几千条数据到手。
|
12天前
|
数据采集 Web App开发 API
B站高清视频爬取:Python爬虫技术详解
B站高清视频爬取:Python爬虫技术详解
|
20天前
|
大数据 开发者 C++
Python语法糖详解教程
《Python语法糖详解教程》介绍了编程语言中的“语法糖”,即通过特殊语法形式简化代码,使代码更简洁、易读和高效。文章详细解析了列表推导式、字典推导式、元组解包、条件表达式、with语句和装饰器等核心语法糖,并提供了具体示例和最佳实践指南。通过这些技巧,开发者可以在保持底层功能不变的前提下,显著提升开发效率和代码质量。
40 8
|
2月前
|
IDE 测试技术 项目管理
【新手必看】PyCharm2025 免费下载安装配置教程+Python环境搭建、图文并茂全副武装学起来才嗖嗖的快,绝对最详细!
PyCharm是由JetBrains开发的Python集成开发环境(IDE),专为Python开发者设计,支持Web开发、调试、语法高亮、项目管理、代码跳转、智能提示、自动完成、单元测试和版本控制等功能。它有专业版、教育版和社区版三个版本,其中社区版免费且适合个人和小型团队使用,包含基本的Python开发功能。安装PyCharm前需先安装Python解释器,并配置环境变量。通过简单的步骤即可在PyCharm中创建并运行Python项目,如输出“Hello World”。
492 13
【新手必看】PyCharm2025 免费下载安装配置教程+Python环境搭建、图文并茂全副武装学起来才嗖嗖的快,绝对最详细!
|
22天前
|
C语言 Python
Python学习:内建属性、内建函数的教程
本文介绍了Python中的内建属性和内建函数。内建属性包括`__init__`、`__new__`、`__class__`等,通过`dir()`函数可以查看类的所有内建属性。内建函数如`range`、`map`、`filter`、`reduce`和`sorted`等,分别用于生成序列、映射操作、过滤操作、累积计算和排序。其中,`reduce`在Python 3中需从`functools`模块导入。示例代码展示了这些特性和函数的具体用法及注意事项。

热门文章

最新文章