python爬虫登录微博_【新手学Python爬虫】微博网页PC端抓包分析和模拟登录
本帖最后由 杀猪用牛刀 于 2020-4-2 23:59 编辑
首先我是一个python爬虫的新手,模拟登录也是我看b站模拟登录教学加自己琢磨完成的,其中很多分析很粗糙,还希望大家多多包涵:lol
话不多说,直接进入正题
微博是重要的信息平台,也是大家爬虫垂涎欲滴的一个去处。但是网页微博如果不登录账号,只让你看一页的内容,只要登录的账号才能放飞自我,爬取福利姬的内容{:1_918:} 。
比如看到一个美女的微博,美图很多,想爬取下来。
1.png (340.77 KB, 下载次数: 2)
小姐姐
2020-4-2 20:28 上传
但是当你看得兴致勃勃,想翻到下一页时
2.png (30.77 KB, 下载次数: 2)
2020-4-2 20:29 上传
微博强行要求你登录。真是太可恶了,必须有python给他登录安排上!
模拟登录第一步,分析登录需要的参数
我们在浏览器登录的时候,虽然只输入账号密码,有时候还要输入验证码。但是其实其中还有很多参数需要提交到服务器,这些都是浏览器帮你做了。
但我们在利用python进行模拟登录的时候,如果只提交账号密码,肯定就被服务器认出来,直接把你拒绝。(毕竟大部分服务器是讨厌爬虫的)
因此,我们需要找到登录微博的时候需要提交那些数据。
抓包
要分析肯定要抓包的拉,我这里用的工具是 fiddler4 。因为其实是第一次用fiddler,不是很熟悉,因此抓了一大堆。但好在是通过“login”这个关键词,将这些包找到。
3.png (194.39 KB, 下载次数: 2)
2020-4-2 20:44 上传
4.png (300.45 KB, 下载次数: 2)
2020-4-2 20:45 上传
我只是截取了一部分,其实我fiddler的页面抓了一大堆,然后看得眼睛都要瞎了。
后面在看URL 的英文,发现有两个链接是登录的关键。
关键链接1:https://login.sina.com.cn/sso/login.php?client=ssologin.js(v1.4.19) #这个链接有明确表示是作为登录作用的
关键链接2:https://login.sina.com.cn/sso/prelogin.php?entry=weibo&callback=sinaSSOController.preloginCallBack&su=&rsakt=mod&client=ssologin.js(v1.4.19)&_=1585637065176 #这个链接的prelogin表示预登录
第二个关键链接可要我老命了,老是抓不到,后面才发现要清除缓存才行,不然微博服务器不会再发送这个东西过来{:1_924:}
然后看一下表单内容,看看登录要上传啥信息上去
表单1.png (46.84 KB, 下载次数: 2)
关键链接1的表单内容
2020-4-2 21:02 上传
表单二.png (30.57 KB, 下载次数: 1)
关键链接2的关键内容
2020-4-2 21:02 上传
一堆不知道啥意思的东西,又臭又长。
于是我换两个不同账号上去登录,看看哪些参数是会变化的,那些是不变化的。
将会变的参数定点击破!!
经过我的n次尝试,发现表单二的“su”, "_" 是变化的。 表单一的 "su","servertime","nonce","rsakv","sp"是变化的。
但这些变量是啥意思呢?
我发现包中还有一个js文件,且名字也是 ssologin.js,这部就是 关键链接1 中提到的js文件吗?
解密变量的钥匙一定在这里面
赶紧打开看看
js.png (86.22 KB, 下载次数: 3)
js文件
2020-4-2 21:13 上传
好家伙,有两千多行,看这些变量明显是登录作用的,直接搜索关键词,看看这些变量到底是什么东西。
首先搜索 “su”,看看你是个什么东西
经过一顿搜索,终于找到:
su.png (18.36 KB, 下载次数: 2)
2020-4-2 21:17 上传
原来是用base64 加密的 用户名啊,拿下!
然后是“_”
时间戳.png (24.31 KB, 下载次数: 2)
2020-4-2 22:40 上传
原来是时间戳,看表单是十三位的时间戳,到时候让python时间戳乘以1000就可以了。
这样预登录需要提交的表单内容就全部搞清楚了,于是将其post到服务器上面,得到如下结果:
预处理.png (44.63 KB, 下载次数: 2)
2020-4-2 22:46 上传
其中红色括号是我们需要的东西,用正则表达式提取就OK了。那个 InsecureRequestWarning 可以不管,反正程序可以正常运行就行。
但是,这些内容并不能直接提交,因为提交过程中js还对这些表单的某些变量进行了一些处理
先看图
servertime.png (29.14 KB, 下载次数: 1)
2020-4-2 22:57 上传
这里可以看到,微博对公钥 和 密码 都进行了rsa的处理。
也就是我们在提交的时候,也要将公钥和密码按其格式加密。
于是终于获取到登录表单所需要的所有变量。
但看抓包的登录页面,好像还是不行,说要什么新浪通行证。
通行证.png (200.46 KB, 下载次数: 2)
2020-4-2 23:10 上传
也就是箭头所指向的内容,看来还得找这个通行证。这里面有个关键线索是“ticket”
这样我继续在fiddler中寻找,找到一个也有ticket的URL:https://passport.weibo.com/wbsso/login?ticket=ST-NjA0MDcwNjc3OA%3D%3D-1585637069-gz-31D972B7B5D5D4D278336F717F7ED6E1-1&ssosavestate=1617173069&callback=sinaSSOController.doCrossDomainCallBack&scriptId=ssoscript0&client=ssologin.js(v1.4.19)&_=1585637070397
ticket.png (41.41 KB, 下载次数: 2)
2020-4-2 23:15 上传
这里 ssosavestate 变量不知道,老规矩继续js文件中看看。
savestate.png (21.28 KB, 下载次数: 2)
2020-4-2 23:20 上传
可以看到ssosavestate 就是一个时间戳加了一个叫 tmpData 的东西,这东西是啥,只能在js中找答案。
s1.png (3.84 KB, 下载次数: 2)
2020-4-2 23:24 上传
s2.png (22.59 KB, 下载次数: 2)
2020-4-2 23:24 上传
最后发现tmpData不管怎么样都是0, 也就是ssosavestate 本质上就是时间戳。。。。
微博搞这个幺蛾子也不知到想干嘛。。。想给分析爬虫增加难度吗?:(eew
于是经过重重阻碍,终于得到所有登录需要的表单参数,于是提交参数,赶紧确认一下能否登录成功。
确认的方法是这样,如果是未登录状态,html的 title是这样的:
微博未登录.png (25.83 KB, 下载次数: 2)
2020-4-2 23:40 上传
显示的是 “微博-随时随地发现新鲜事”字样。
而登录成功则是显示 :我的首页 微博-随时随地发现新鲜事。
运行代码看看:
登录成功.png (13.31 KB, 下载次数: 2)
2020-4-2 23:43 上传
成功登录!!!
最后
这个方法虽然登录是成功,但是可能因为验证码问题,所以提交五六次表单,基本就成功个一次。。
后面还得好好研究学习。。。
python爬虫登录微博_【新手学Python爬虫】微博网页PC端抓包分析和模拟登录相关推荐
- 学习python用的什么编辑器_新手学Python用什么编辑器比较好?
新手学Python用什么编辑器比较好?工欲善其事必先利其器,选好工具学习更高效.市面上流行的编辑器众多,根据自己的需求选择适合自己.p小白可以选择pycharm配置简单功能强大使用起来省时省心,对初学 ...
- 从零开始学python网络爬虫读书笔记_从零开始学Python网络爬虫 中文pdf
资源名称:从零开始学Python网络爬虫 中文pdf 第1章 Python零基础语法入门 1 第2章 爬虫原理和网页构造 17 第3章 我的第一个爬虫程序 26 第4章 正则表达式 45 第5章 Lx ...
- python基本输入输出函数有_新手学Python,输入输出函数、赋值语句常见5个错误,弄懂即过关...
从4月21日起,大陈开始教初一的学生学Python,目前已经上了2节课.学生基本掌握了表达式的构建以及赋值语句.变量的使用,以及input(输入函数).print(输出函数)的使用方法. 以下是大陈在 ...
- python爬虫获取方法_小白学python爬虫:2.获得数据
在上一篇文章我我们已经完成了对网页的分析,包括了:在源码中数据的定位:获取方法(xpath).那么在获得数据之前我们考虑的则是如何获取源码. 接下来我们将学习如何从服务器获得源码. #写在前面&quo ...
- 新手学python书籍推荐_新手学python看哪本书
对于零基础入门的人来说,对于Python的学习还是有点懵懵懂懂的,如果有一些书籍先看看来引导,学起来难度也会减低很多!所以,学python倒是向大家推荐这些书籍! 1.<PYTHON基础教程(第 ...
- python urllib dns 缓存_新手用Python做一个网页爬虫
咱们好哈,最近博主在学习Python,学习时期也遇到一些问题,获得了一些经历,在此将自个的学习体系地整理下来,假如咱们有爱好学习爬虫的话,能够将这些文章作为参阅,也期待咱们总共同享学习经历. 首要py ...
- python自学入门要多久,新手学python需要多久
学python要多久? 零基础进行Python学习的话,如果选择自学,一般学习周期在一年半左右.选择进行培训的话,学习Python周期一般在五到六个月左右,不过学习的种类不同,班级不同,培训周期也是存 ...
- python哪个方向简单_现在学Python,哪个方向最简单?哪个方向最吃香 ?
" 我想学Python,但是学完Python后都能干啥 ?" " 现在学Python,哪个方向最简单?哪个方向最吃香?" " -- " 相信 ...
- python数据分析相关论文_菜鸟学Python|数据分析精华文章大集合
原标题:菜鸟学Python|数据分析精华文章大集合 这是菜鸟学Python的第123篇原创文章 Python的数据分析是我比较喜欢的一个方向,因为可以探索数据里面的秘密,加上可视乎会非常漂亮,但是里面 ...
最新文章
- 有了这 4 款工具,老板再也不怕我写烂SQL了
- 数据结构线段树介绍与笔试算法题-LeetCode 307. Range Sum Query - Mutable--Java解法
- 【转】android自定义控件
- ncnn-mobile
- python函数不定参数求和
- 能够提高开发效率的Eclipse实用操作
- laravel如何生成swagger接口文档
- Spring AOP原理浅析及入门实例
- android图片加水印,文字
- 2020 年初,我制作完成了一本掘金小册
- QQ小程序加QQ群和加好友
- linux终端解微分方程,解微分方程+ode求解器
- dz中footer.php在哪找,dz模版制作教程
- 重磅:Mobileye官宣推迟IPO,营收增速放缓、市场竞争加剧
- java中 int、char、long各占多少字节数
- 关于怎么访问受限QQ空间、相册等
- python基本语法(1)
- Python编程——pickle模块的使用详解(附实例)
- 永远的第一章:Java历史
- HTML+CSS+JS520告白表白模板在线制作(七夕情人节表白网页代码)
热门文章
- 苹果应用内购买(IAP)—从入门到放弃
- VMware16调整了路径后界面全部变成了英文
- python爬取pbf格式的矢量瓦片并转换为shp使用
- 多区域 DNS 服务,子域授权,缓存 DNS及Split 分离解析的原理和实现
- Adobe CC 2019
- 心灵成长的六个定律 (5) - By 武志红
- 2019最新《妙堂Javascript全套项目实战》
- Sybase datetime 时间转换格式 convert(varchar(10),字段名,转换格式)
- VW ware安装Ubuntu虚拟机及环境配置
- 苹果手机怎么切换输入法_苹果手机输入法的小技巧,你知道几个?最后一个你肯定不知道...