新浪微博PC端登录分析

本来给自己定了个2018的目标,平均每月写两篇文章,现在已经快三月了,第一篇稿子才憋出来,惭愧呀,直入主题吧,今天给大家带来的是新浪微博PC端的模拟登陆。

工具

这次使用的工具是Charles和chrome浏览器,看过我之前文章的同学应该知道我使用的Mac电脑,Fiddler不能用,之前用虚拟机很麻烦。很早的时候有装过Charles,但是不太会用,后来发现一篇比较详细的文章,忘了记录了。发现Charles还是非常好用的,而且有个很好的功能,就是可以开启多个Session进行抓取对比,这个功能非常?,如果经常做爬虫调试的人一定能知道。我们抓取一个网站的登录过程,然后在模拟的过程中,可以再另一个session中抓取自己模拟登录的过程,然后对比一下自己的请求发送的数据和浏览器请求发送的数据是否一致。之前我调试一直都是通过打印查看,这样一方面很不方便,另外一方面打印也不完整。所以非常推荐大家使用Charles,网上破解也有很多。Charles

打开Charles,要开启SSL代理抓取,这样才能抓取到HTTPS请求,毕竟现在很多网站都已经使用HTTPS请求了
HTTPS抓取设置
Host填*表示匹配所有网址,HTTP请求端口是80端口,HTTPS请求端口是443端口,设置好就可以开始抓取了。

抓取请求

打开chrome浏览器,最好清理缓存,然后使用隐身模式访问https://weibo.com/
打开隐身窗口
无痕模式
在网页上执行一遍登录操作
微博登录过程
抓取到登录过程后,我们就可以开始分析了,记住一定要清理缓存。我有好几次抓取都不一样,后来换了Safari浏览器(因为我很少用这个),其实这一步用什么浏览器都无所谓,chrome浏览器主要是用来调试JS用的。

过程分析

查找登录请求

登录一般url里面应该都会有login,而且是post请求,当然不排除其他方式。
https://login.sina.com.cn/sso/login.php?client=ssologin.js(v1.4.19)登录请求url

找到登录请求后,这里主要关注Form表单信息,参数很多,我们需要先大概区分一下哪些可能是固定参数,哪些是变化的参数。
参数确定
一目了然可以看到那些是固定的了吧,这些所有的参数其实我们都是可以追根溯源的,但是没那个必要,在这种参数比较多的情况下,太费事了,可以采用多次抓取登录过程,对比请求参数的方式确定部分固定的或者不重要的参数,那么需要我们通过其他方式获取的参数有pcid、door、su、servertime、nonce、rsakv、sp、prelt,这里servertime比较有争议,一般看到这种time或者151开头的10位或者13位数字,都是时间戳,用time.time()获取就可以,但是这里是servertime,我们应该引起注意。

参数分析

下面我们一一来看这几个参数怎么获取
- su
我们要先说一下这个su,因为其他的参数都和它有关系。这个su在js调试的时候可以看到它的算法,但是其实我们可以根据它的特点先猜测一下,有可能是base64加密的。为什么?

  Base64是一种基于64个可打印字符来表示二进制数据的方法,哪64个字符呢?            A-Z、a-z、0-9和"+"、"/",很多时候base64加密的字符串尾部为 1个或2个  "=",因为它是把3个字节的二进制拼接,如果最后剩下一个,那么尾部就会添加2个=,如果剩下两个,尾部就添加1个=,如果刚合适那当然就没有=了

推荐一个工具网站https://tool.lu/encdec/
image.png
使用编解码试试看,最终我发现是账号,而且是采用了url encode和base64编码,所有最终我们的su就是image.png

  • pcid、servertime、nonce、rsakv
    它的值时gz-48fb749c5c715e0d5caeed045716492e153c,我们先在Charles中搜索一下pcid
    我们一般都是搜索response的数据,主要是看一下是不是在某一个请求的返回值里面,这里非常棒,我们找到了pcid和值出现的地方=1518956150179”>https://login.sina.com.cn/sso/prelogin.php?entry=weibo&callback=sinaSSOController.preloginCallBack&su=MTgwOTE3MzQxMzY%3D&rsakt=mod&checkpin=1&client=ssologin.js(v1.4.19)&=1518956150179,在这个请求的返回值里面,而且我们还有意外的收获,我们得到了四个参数,和登录请求里面的一样,?我们现在确定了四个参数的来源,
    image.png
    看一下请求的参数
    image.png
    除了su和下面的时间戳其他的参数基本固定,时间戳没什么特点,我们就用int(time.time() * 1000)生成,因为是13位的。su我们上面已经知道了。那么这四个参数也搞定了✌️
  • door
    door很熟悉吧,是验证码。那么验证码的请求怎么确定,非常简单因为我们的验证码是一张图片,所以找图片请求就可以了
    验证码
    这个往上翻一翻就能很快找到,找到后我们看看它的参数参数
    p的值就是pcid的值,我们已经知道了。r有点不太好找了,先在Charles里搜一下62026273,没找到,那么应该就是本地生成的,其实你可以写死试试,有没有问题。除了搜这个值以外,我们还可以搜一下这个请求是在哪里生成的,看它附近有没有有用的数据。
    image.png
    搜一部分就行了,先用小部分搜,如果结果太多,在多加一些搜索,这里我们找到了一条,点击去看一看,点到JavaScript那个页签,Charles会帮我们格式化jsimage.png
    找到了pincodeUrl,再搜索一下pincodeUrlimage.png
    看到没有,开不开心?激不激动?
    验证码请求
  • prelt
    这个参数和验证码请求的那个r参数类似,值搜不到,但是我们可以搜这个prelt,你问r那个为啥不搜?[鄙视眼]你猜猜能搜到多少?image.png
    同样点进去,切换到JavaScript页签,发现了preloginTime,再搜它吧

    image.png
    多搜一些你就发现它应该是个时间段,结合prelt本身的值,我们就可以构造出一个值。可以通过多次请求来确定一个范围,另外时间差,而且它用的是本地的时间计算的,那么也不需要多么精确,确定一个范围应该就可以了,所以在一个范围内取随机数就行了
    -sp
    最麻烦的来了,sp这么长一段,观察其特点,发现应该是16进制,所有字符都是在0-9、a-f之间,而且参数pwencode的值rsa2,基本上我们就可以确定其采用的是rsa加密算法。这串字符肯定是搜索不到的,可以搜sp,删掉明显不是的,我们一般看的是sp=xx这样的,就是看赋值,从赋值的操作上下文去查看
    image.png
    经过过滤分析,只剩下两个地方https://passport.weibo.com/visitor/visitor?entry=miniblog&a=enter&url=https%3A%2F%2Fweibo.com%2F&domain=.weibo.com&ua=php-sso_sdk_client-0.6.23&_rand=1518956141.4946和https://js1.t.sinajs.cn/t5/register/js/v6/pl/register/loginBox/index.js?version=d7a77880fa9c5f84
    image.png
    然后打开chrome浏览器,开发者工具,然后访问https://weibo.com,切换到source页签找到这两个js文件,并搜索sp,通过观察特点基本确认为第二个js文件
    image.png
    e.sp = b,在b的计算之前打上断点,然后执行登录操作,这里我们还发现了su的计算算法,跟我们上面分析的基本一致image.png
    通过调试这段代码我们就得到了其加密方式,这里有几个变量me.rsaPubkey、me.servertime、me.nonce、b,通过console中查看b是密码,然后就是这pubkeyimage.png
    在上面pcid参数的请求的返回值里面我们看到有这个值。OK这几个变量我们都知道了,下面你了解一下rsa加密算法的python实现,直接贴代码image.png

执行登录请求

登录请求的所有参数都已经分析完了,登录后查看response数据image.png
然后再看一下登录请求的下一个请求,发现是通过登录请求的返回值中的url,然后发送此请求
image.png
返回值中又出现了另外一个url,我们在下面也找到了,提取url发送请求
image.png
看到返回状态了吗?302重定向。发送请求以后查看一下response的url,发现是在它下面的请求地址


返回值和下面的请求好像有点关联,有下一个请求的参数。别急,先等等,我们就这样一直请求、提取请求、再请求,得有个终点吧,到哪里算一站呢。我们想想登录以后,显示一个页面有用户名。我们只要能得到这个用户名那就说明登录成功了。image.png
这里看到了这个home请求中出现了我的用户昵称,然后上面那个请求的返回状态302,又是重定向。使用上面的方式确认一下。提取userdomain,然后拼接https://weibo.com/
image.png
成功了image.png

这一次写这篇博文就顺畅多了,还是知识积累的问题。后面还有一篇百度登录分析的,发现百度这个确实是很复杂,目前还没搞定。尽请期待哦


如果你觉得我的文章还可以,可以关注我的微信公众号,查看更多实战文章:Python爬虫实战之路
也可以扫描下面二维码,添加我的微信公众号

公众号

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/55898.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

腾讯空间、新浪微博、腾讯微博分享接口

腾讯空间、新浪微博、腾讯微博分享接口。 注意&#xff1a;在网站对接前&#xff0c;请先申请注册好您的QQ登录appid、新浪登录Appkey、腾讯微博appkey。 1、引用JS文件 <script src"http://qzonestyle.gtimg.cn/qzone/openapi/qc_loader.js" data-appid&quo…

Android模仿新浪微博(写微博界面)

发布一条新微博接口&#xff1a;http://open.weibo.com/wiki/2/statuses/update 上传图片并发布一条新微博接口&#xff1a;http://open.weibo.com/wiki/2/statuses/upload 1.根据有没有图片来选择相应的接口。 2.根据输入框的改变判断文字数。 3.创建一个girlview显示发送…

android客户端接入新浪、腾讯微博以及人人网

本文原创http://blog.csdn.net/yanbin1079415046&#xff0c;转载请注明出处。 从事android工作也有段时间了&#xff0c;碍于肚子里料不多&#xff0c;一直也没写过什么东西。最近刚好项目中要接入新浪微博&#xff0c;就顺便研究了一下android客户端接入腾讯微博和人人网。由…

【第三方互联】9、新浪微博(sina)授权第三方登录

当我们创建的新浪微博互联应用成功后,我们便可以开始使用该应用来实现新浪微博授权操作 一、获取 App Key 和 App Secret 1、在“我的应用”,点击应用,查看我们创建的应用的基本信息 这样,我们就获取到了 App Key 和 App Secret 2、将 App Key 和 App Secret,以及该应用…

爬取微博上某大v,明星,官微等用户的微博信息的小技巧

通常成功的大门&#xff0c;其实都是虚掩着的 现在大多在爬取微博时&#xff0c;都是采用selenium框架&#xff0c;爬取pc端微博页面&#xff0c;模拟鼠标下拉来解决动态加载的问题&#xff0c;虽然笨拙&#xff0c;但是也能解决问题。今天我给大家推荐个更加好的方法。首先清看…

用ChatGPT可以去微博做个大V了(狗头)

将来用ChatGPT可以去微博做个大V了&#xff08;狗头&#xff09; 体验最近很火的ChatGPT体验了一下&#xff0c;这个OpenAI是真的强。 这小诗写的还挺有意境&#xff0c;网上搜了一下还没看到完全一样的。 现在各大厂商都布局OpenAI&#xff0c;期待更多黑科技。

黄仁勋评价股东孙正义

看NVIDIA人工智能全局&#xff0c;黄仁勋评价股东孙正义 “孙正义是我所知道的唯一能准确预知每一次科技浪潮的人。” 云科技时代 2017/06/18 21:01评论(0) 收藏(0)字体&#xff1a;宋 英伟达孙正义 (黄仁勋在2017台北Computex上) 2017年5月&#xff0c;传出软银悄悄购入40亿美…

英伟达CEO黄仁勋:NFT元宇宙已经到来

在与 Venturebeat 视频游戏记者 Dean Takahashi 的对话中&#xff0c;英伟达&#xff08;Nvidia&#xff09;首席执行官黄仁勋 Jensen Huang 表示&#xff0c;他相信“我们正处于基于区块链的增强现实元宇宙的风口浪尖”。 在周六发表的采访中&#xff0c;这位显卡巨头负责人描…

“核弹”之父——黄仁勋

一抹幽绿&#xff0c;有如眼睛一般的形状——相信已经很难有人不认识NVIDIA那标志性的LOGO了。今天的NVIDIA在显卡领域可谓无人能及&#xff0c;在通用计算和AI领域也留下浓重一笔&#xff0c;而带领NVIDIA取得现在成就的就是NVIDIA的联合创始人、CEO——黄仁勋。 初识老黄 想…

华人“军火专家”——黄仁勋

昨天我们介绍GPU的文章中有提到一位华人&#xff0c;他由于两款产品发热量大到能煎鸡蛋&#xff0c;被游戏玩家戏称为“两弹元勋”“军火专家”&#xff0c;在硅谷被认为是和杰夫贝索斯、伊隆马斯克并驾齐驱的人物&#xff0c;他创办的公司尽管不像智能手机企业、互联网企业那样…

黄仁勋没有回应,英伟达没有新品

晓査 乾明 假装发自 苏州量子位 出品 | 公众号 QbitAI 黄仁勋上台&#xff0c;然后下台。 在今天上午的GTC China大会上&#xff0c;黄教主没能拿出让人惊艳的新品&#xff0c;也没有只字片语回应英伟达的目前的“困境”。 大会之后的采访环节&#xff0c;老黄也没来。 据说是&…

黄仁勋把自己做成了虚拟娃娃

明敏 发自 凹非寺量子位 报道 | 公众号 QbitAI 英伟达是推出黄仁勋手办了吗&#xff1f;&#xff1f;&#xff1f; 看上去还挺可爱的呢。 不过事情可没有这么简单&#xff0c;接下来这一幕或许就会让你大为震撼。 因为&#xff0c;这个萌版老黄&#xff0c;是 会 动 的。 不仅如…

虚拟人是如何制作的?企业专属虚拟形象如何定制打造成虚拟代言?

虚拟数字人是指以数字形式存在于数字空间中&#xff0c;具有拟人或真人的外貌、行为和特点的虚拟人物&#xff0c;也称之为虚拟形象、数字虚拟人等。虚拟数字人核心技术主要包括计算机图形学、动作捕捉、图像渲染、AI等。虚拟数字人可以打造更完美的人设&#xff0c;为品牌带来…

GPT学习路线分享

初代GPT-3展示了三个重要能力&#xff1a; 语言生成&#xff1a;遵循提示词&#xff08;prompt&#xff09;&#xff0c;然后生成补全提示词的句子。这也是今天人类与语言模型最普遍的交互方式。 上下文学习 (in-context learning): 遵循给定任务的几个示例&#xff0c;然后为…

程序员的数学---数学思维的锻炼

第三章&#xff1a; 余数–周期性和分组 星期问题 来看一道简单的题目&#xff1a;今天星期日&#xff0c;那么 100 天以后星期几&#xff1f; 这个问题最笨的方法就是数数了。不过那样也是颇为费事&#xff0c;从余数方向考虑&#xff1a;一个礼拜 7 天&#xff0c;100 天等…

LaTeX技巧10:LaTeX数学公式输入初级入门

常见数学公式问题集下载 LaTeX最强大的功能就是显示美丽的数学公式&#xff0c;下面我们来看这些公式是怎么实现的。 1、数学公式的前后要加上 $ 或 \( 和 \)&#xff0c;比如&#xff1a;$f(x) 3x 7$ 和 \(f(x) 3x 7\) 效果是一样的&#xff1b; 如果用 \[ 和 \]&#xf…

Latex系列4---数学公式

前面几章其实已经把基础的Latex中文文本写的差不多了。这一章节针对我论文中用到的数学公式写一些心得。 数学公式 通常理工科写论文&#xff0c;少不了数学公式。在公式上&#xff0c;我个人认为相比word&#xff0c;latex还是有非常大的优势。 行内公式 行内公式通常用一对…

在OneNote种使用Latex命令愉快地敲出数学公式

在OneNote种使用Latex命令愉快地敲出数学公式 office中所有支持键盘输入的公式 office中默认是用的Unicodemath&#xff0c;相关的语法上个链接里面就有&#xff0c;office提供了Unicodemath与latex互转的方法。相关链接如下&#xff1a;LaTeX Math in Office Unicodemath …

数学公式识别神器Mathpix,零错误高效率

我们完成论文最费时间的可能就是公式了&#xff0c;尤其是对于工科学生&#xff0c;所以这里给大家带来了特别高效率几乎零错误的识别公式工具&#xff0c;这样可以节约很多的时间。博主测验&#xff0c;效率非常好。 官网 地址&#xff1a;https://mathpix.com/ 进入后&…

数学公式截图识别神器Mathpix无限使用教程

源链&#xff1a;数学公式截图识别神器Mathpix无限使用教程 - 哔哩哔哩点击进入查看全文>https://www.bilibili.com/read/cv8289444?fromsearch&spm_id_from333.337.0.0一、Mathpix软件注册教程 1.首先打开网址&#xff1a;https://accounts.mathpix.com/signup?refer…