吾爱破解 - LCG - LSG |安卓破解|病毒分析|www.52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 7957|回复: 29
上一主题 下一主题
收起左侧

[Python 转载] 【新手学Python爬虫】微博网页PC端抓包分析和模拟登录

  [复制链接]
跳转到指定楼层
楼主
杀猪用牛刀 发表于 2020-4-2 23:53 回帖奖励
本帖最后由 杀猪用牛刀 于 2020-4-2 23:59 编辑

首先我是一个python爬虫的新手,模拟登录也是我看b站模拟登录教学加自己琢磨完成的,其中很多分析很粗糙,还希望大家多多包涵:lol

话不多说,直接进入正题
  微博是重要的信息平台,也是大家爬虫垂涎欲滴的一个去处。但是网页微博如果不登录账号,只让你看一页的内容,只要登录的账号才能放飞自我,爬取福利姬的内容{:1_918:} 。

比如看到一个美女的微博,美图很多,想爬取下来。


但是当你看得兴致勃勃,想翻到下一页时


微博强行要求你登录。真是太可恶了,必须有python给他登录安排上!


模拟登录第一步,分析登录需要的参数
  我们在浏览器登录的时候,虽然只输入账号密码,有时候还要输入验证码。但是其实其中还有很多参数需要提交到服务器,这些都是浏览器帮你做了。
  但我们在利用python进行模拟登录的时候,如果只提交账号密码,肯定就被服务器认出来,直接把你拒绝。(毕竟大部分服务器是讨厌爬虫的)
  因此,我们需要找到登录微博的时候需要提交那些数据。

抓包
  要分析肯定要抓包的拉,我这里用的工具是 fiddler4 。因为其实是第一次用fiddler,不是很熟悉,因此抓了一大堆。但好在是通过“login”这个关键词,将这些包找到。

  我只是截取了一部分,其实我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:}

然后看一下表单内容,看看登录要上传啥信息上去


一堆不知道啥意思的东西,又臭又长。
于是我换两个不同账号上去登录,看看哪些参数是会变化的,那些是不变化的。
将会变的参数定点击破!!

经过我的n次尝试,发现表单二的“su”, "_" 是变化的。 表单一的 "su","servertime","nonce","rsakv","sp"是变化的。

但这些变量是啥意思呢?

我发现包中还有一个js文件,且名字也是 ssologin.js,这部就是 关键链接1 中提到的js文件吗?

解密变量的钥匙一定在这里面

赶紧打开看看



好家伙,有两千多行,看这些变量明显是登录作用的,直接搜索关键词,看看这些变量到底是什么东西。

首先搜索 “su”,看看你是个什么东西
经过一顿搜索,终于找到:


原来是用base64 加密的 用户名啊,拿下!

然后是“_”

原来是时间戳,看表单是十三位的时间戳,到时候让python时间戳乘以1000就可以了。

这样预登录需要提交的表单内容就全部搞清楚了,于是将其post到服务器上面,得到如下结果:

其中红色括号是我们需要的东西,用正则表达式提取就OK了。那个 InsecureRequestWarning 可以不管,反正程序可以正常运行就行。

但是,这些内容并不能直接提交,因为提交过程中js还对这些表单的某些变量进行了一些处理

先看图


这里可以看到,微博对公钥 和 密码 都进行了rsa的处理。

也就是我们在提交的时候,也要将公钥和密码按其格式加密。

于是终于获取到登录表单所需要的所有变量。

但看抓包的登录页面,好像还是不行,说要什么新浪通行证。



也就是箭头所指向的内容,看来还得找这个通行证。这里面有个关键线索是“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



这里 ssosavestate 变量不知道,老规矩继续js文件中看看。



可以看到ssosavestate 就是一个时间戳加了一个叫 tmpData 的东西,这东西是啥,只能在js中找答案。



最后发现tmpData不管怎么样都是0, 也就是ssosavestate 本质上就是时间戳。。。。
微博搞这个幺蛾子也不知到想干嘛。。。想给分析爬虫增加难度吗?:(eew

于是经过重重阻碍,终于得到所有登录需要的表单参数,于是提交参数,赶紧确认一下能否登录成功。

确认的方法是这样,如果是未登录状态,html的 title是这样的:

显示的是 “微博-随时随地发现新鲜事”字样。

而登录成功则是显示 :我的首页 微博-随时随地发现新鲜事。

运行代码看看:

成功登录!!!


最后
这个方法虽然登录是成功,但是可能因为验证码问题,所以提交五六次表单,基本就成功个一次。。
后面还得好好研究学习。。。











  

微博登录.txt

4.41 KB, 下载次数: 78, 下载积分: 吾爱币 -1 CB

源代码,改成py文件就可运行

免费评分

参与人数 15吾爱币 +12 热心值 +12 展开 理由
forezy + 1 用心讨论,共获提升!
w4526423 + 2 + 1 热心回复!
python初学者 + 1 + 1 用心讨论,共获提升!
kaif546 + 1 + 1 谢谢@Thanks!
手持仙女棒 + 1 + 1 我很赞同!
WANGfanr + 1 用心讨论,共获提升!
zjkkg1 + 1 + 1 谢谢@Thanks!
sulingchen + 1 + 1 热心回复!
liuyunfz + 1 用心讨论,共获提升!
晚风以晚 + 1 我很赞同!
dogz + 1 + 1 用心讨论,共获提升!
凯凯爱破解 + 1 + 1 用心讨论,共获提升!
15126819695 + 1 厉害了
934662056 + 1 我很赞同!
featmellwo + 1 用心讨论,共获提升!

查看全部评分

本帖被以下淘专辑推荐:

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

推荐
淘金顽猴 发表于 2020-4-10 00:47
本帖最后由 淘金顽猴 于 2020-4-10 00:49 编辑

你好,有个问题是,登录后,抓包返回通行证界面,是一个长链接,但是post返回的数据是,明显跟抓包不一致啊,登陆应该是通过的,为何跟抓包返回的不一致,有人遇到过这个情况吗?楼主有联系方式吗?
<title>新浪通行证</title>
               <meta http-equiv="refresh" content="0; url='https://login.sina.com.cn/crossdomain2.php?action=login&entry=weibo&r=https%3A%2F%2Flogin.sina.com.cn%2F&sr=1920%2A1080'"/>
                <meta http-equiv="Content-Type" content="text/html; charset=GBK" />
                </head>
                <body bgcolor="#ffffff" text="#000000" link="#0000cc" vlink="#551a8b" alink="#ff0000">
                <script type="text/javascript" language="javascript">
                        location.replace("https://login.sina.com.cn/crossdomain2.php?action=login&entry=weibo&r=https%3A%2F%2Flogin.sina.com.cn%2F&sr=1920%2A1080");
                </script>


应该是这种才对,好奇怪啊!!!!!
        <script type="text/javascript" language="javascript">
                location.replace("https://login.sina.com.cn/crossdomain2.php?action=login&entry=weibo&r=https%3A%2F%2Fpassport.weibo.com%2Fwbsso%2Flogin%3Fssosavestate%3D1617886419%26url%3Dhttps%253A%252F%252Fweibo.com%252Fajaxlogin.php%253Fframelogin%253D1%2526callback%253Dparent.sinaSSOController.feedBackUrlCallBack%2526sudaref%253Dweibo.com%26display%3D0%26ticket%3DST-NjA3MzA0MDk2Mg%3D%3D-1586350419-yf-29DE616104E2C71030B45B26B061033E-1%26retcode%3D0&login_time=1586350419&sign=6675215c5feefa48&sr=1920%2A1080");
                </script>
推荐
 楼主| 杀猪用牛刀 发表于 2020-4-4 08:34 |楼主
冰镇苏打水 发表于 2020-4-3 08:21
控制台切换成手机浏览器模式.会简单很多..

你说的是登录 wap版的网页微博吗?wap版提供的高级搜索比 pc版的要弱很多。。。
头像被屏蔽
沙发
maoxingren 发表于 2020-4-3 00:07
3#
小可爱圆圆 发表于 2020-4-3 00:14
感谢分享,谢谢。
4#
superzhangxue 发表于 2020-4-3 00:31
感谢分享,学习了
5#
shitouhn 发表于 2020-4-3 01:07
看起来好麻烦的样子,一般人玩不来。
6#
dogz 发表于 2020-4-3 06:43
验证码、反爬虫等问题,尚祈求先进们多多指导了,感谢分享。
7#
hyoulin68 发表于 2020-4-3 07:10
感谢分享,谢谢。
8#
qll24680 发表于 2020-4-3 08:07
膜拜大佬
9#
wxue 发表于 2020-4-3 08:14
虽然没看明白,但还是学习了
10#
冰镇苏打水 发表于 2020-4-3 08:21
控制台切换成手机浏览器模式.会简单很多..
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则 警告:本版块禁止灌水或回复与主题无关内容,违者重罚!

快速回复 收藏帖子 返回列表 搜索

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-5-6 11:15

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表