本帖最后由 杀猪用牛刀 于 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端抓包分析和模拟登录相关推荐

  1. 学习python用的什么编辑器_新手学Python用什么编辑器比较好?

    新手学Python用什么编辑器比较好?工欲善其事必先利其器,选好工具学习更高效.市面上流行的编辑器众多,根据自己的需求选择适合自己.p小白可以选择pycharm配置简单功能强大使用起来省时省心,对初学 ...

  2. 从零开始学python网络爬虫读书笔记_从零开始学Python网络爬虫 中文pdf

    资源名称:从零开始学Python网络爬虫 中文pdf 第1章 Python零基础语法入门 1 第2章 爬虫原理和网页构造 17 第3章 我的第一个爬虫程序 26 第4章 正则表达式 45 第5章 Lx ...

  3. python基本输入输出函数有_新手学Python,输入输出函数、赋值语句常见5个错误,弄懂即过关...

    从4月21日起,大陈开始教初一的学生学Python,目前已经上了2节课.学生基本掌握了表达式的构建以及赋值语句.变量的使用,以及input(输入函数).print(输出函数)的使用方法. 以下是大陈在 ...

  4. python爬虫获取方法_小白学python爬虫:2.获得数据

    在上一篇文章我我们已经完成了对网页的分析,包括了:在源码中数据的定位:获取方法(xpath).那么在获得数据之前我们考虑的则是如何获取源码. 接下来我们将学习如何从服务器获得源码. #写在前面&quo ...

  5. 新手学python书籍推荐_新手学python看哪本书

    对于零基础入门的人来说,对于Python的学习还是有点懵懵懂懂的,如果有一些书籍先看看来引导,学起来难度也会减低很多!所以,学python倒是向大家推荐这些书籍! 1.<PYTHON基础教程(第 ...

  6. python urllib dns 缓存_新手用Python做一个网页爬虫

    咱们好哈,最近博主在学习Python,学习时期也遇到一些问题,获得了一些经历,在此将自个的学习体系地整理下来,假如咱们有爱好学习爬虫的话,能够将这些文章作为参阅,也期待咱们总共同享学习经历. 首要py ...

  7. python自学入门要多久,新手学python需要多久

    学python要多久? 零基础进行Python学习的话,如果选择自学,一般学习周期在一年半左右.选择进行培训的话,学习Python周期一般在五到六个月左右,不过学习的种类不同,班级不同,培训周期也是存 ...

  8. python哪个方向简单_现在学Python,哪个方向最简单?哪个方向最吃香 ?

    " 我想学Python,但是学完Python后都能干啥 ?" " 现在学Python,哪个方向最简单?哪个方向最吃香?" " -- " 相信 ...

  9. python数据分析相关论文_菜鸟学Python|数据分析精华文章大集合

    原标题:菜鸟学Python|数据分析精华文章大集合 这是菜鸟学Python的第123篇原创文章 Python的数据分析是我比较喜欢的一个方向,因为可以探索数据里面的秘密,加上可视乎会非常漂亮,但是里面 ...

最新文章

  1. 有了这 4 款工具,老板再也不怕我写烂SQL了
  2. 数据结构线段树介绍与笔试算法题-LeetCode 307. Range Sum Query - Mutable--Java解法
  3. 【转】android自定义控件
  4. ncnn-mobile
  5. python函数不定参数求和
  6. 能够提高开发效率的Eclipse实用操作
  7. laravel如何生成swagger接口文档
  8. Spring AOP原理浅析及入门实例
  9. android图片加水印,文字
  10. 2020 年初,我制作完成了一本掘金小册
  11. QQ小程序加QQ群和加好友
  12. linux终端解微分方程,解微分方程+ode求解器
  13. dz中footer.php在哪找,dz模版制作教程
  14. 重磅:Mobileye官宣推迟IPO,营收增速放缓、市场竞争加剧
  15. java中 int、char、long各占多少字节数
  16. 关于怎么访问受限QQ空间、相册等
  17. python基本语法(1)
  18. Python编程——pickle模块的使用详解(附实例)
  19. 永远的第一章:Java历史
  20. HTML+CSS+JS520告白表白模板在线制作(七夕情人节表白网页代码)

热门文章

  1. 苹果应用内购买(IAP)—从入门到放弃
  2. VMware16调整了路径后界面全部变成了英文
  3. python爬取pbf格式的矢量瓦片并转换为shp使用
  4. 多区域 DNS 服务,子域授权,缓存 DNS及Split 分离解析的原理和实现
  5. Adobe CC 2019
  6. 心灵成长的六个定律 (5) - By 武志红
  7. 2019最新《妙堂Javascript全套项目实战》
  8. Sybase datetime 时间转换格式 convert(varchar(10),字段名,转换格式)
  9. VW ware安装Ubuntu虚拟机及环境配置
  10. 苹果手机怎么切换输入法_苹果手机输入法的小技巧,你知道几个?最后一个你肯定不知道...