原文链接(本人):https://blog.csdn.net/A5878989/article/details/76275855

说明
本文主要记录分析新浪微博登陆以及发送文字和图片微博的详细过程
分析
登陆入口选择的是新浪通行证登陆入口
https://login.sina.com.cn/signup/signin.php
抓包找到登陆请求
https://login.sina.com.cn/sso/login.php?client=ssologin.js(v1.4.15)&_=1501239862897

登陆参数和响应

SRE实战 互联网时代守护先锋,助力企业售后服务体系运筹帷幄!一键直达领取阿里云限量特价优惠。

新浪微博登陆以及发送微博(附python源码) 随笔 第1张

登陆肯定少不了用户名和密码,这些参数中符合条件的只有su 和sp,su可以猜测base64编码的,解码后得到了我的账户名,sp肯定是加密后的密码,但是需要知道加密方式然而pwencode参数告诉我们是RSA加密,既然时非对称加密,所有肯定需要获取公钥,而且客户端肯定有登陆操作时加密等操作的代码。client参数已经很明显了,需要去找到这个js文件。找到ssologin.js文件之后就不用猜了,直接分析代码了

关键代码

新浪微博登陆以及发送微博(附python源码) 随笔 第2张

通过分析代码可以知道用户名是urlencode之后再base64编码,密码是几个变量和密码拼接之后用公钥加密的,所以登陆之前肯定需要获取变量和公钥
 
登陆之前请求
https://login.sina.com.cn/sso/prelogin.php?entry=account&callback=sinaSSOController.preloginCallBack&su=ODkxOTkyNDg5ZnclNDBzaW5hLmNu&rsakt=mod&client=ssologin.js(v1.4.15)&_=1501239861950

请求参数和响应

新浪微博登陆以及发送微博(附python源码) 随笔 第3张

可以看到返回登陆所需要的一些变量,公钥等等(需要注意的是返回的公钥是十六进制的需要转换,构造公钥的时候10001也可直接替换为65537)

登陆成功的请求是这样的

新浪微博登陆以及发送微博(附python源码) 随笔 第4张

登陆成功之后返回uid以及需要重定向的地址。
 发送微博
 http://weibo.com/aj/mblog/add?ajwvr=6&__rnd=1501242956000

发送微博请求

新浪微博登陆以及发送微博(附python源码) 随笔 第5张

 pic_id即图片id,这个id是在上传图片的时候返回的

 上传图片
 http://picupload.weibo.com/interface/pic_upload.php?cb=http%3A%2F%2Fweibo.com%2Faj%2Fstatic%2Fupimgback.html%3F_wv%3D5%26callback%3DSTK_ijax_150124497795341&mime=image%2Fjpeg&data=base64&url=0&markpos=1&logo=&nick=%40%E4%B8%96%E7%95%8C%E9%82%A3%E9%BA%BC%E5%A4%A7_&marks=0&app=miniblog&s=rdxt

参数和响应

新浪微博登陆以及发送微博(附python源码) 随笔 第6张

代码下载地址

扫码关注我们
微信号:SRE实战
拒绝背锅 运筹帷幄