新浪微博登陆以及发送微博(附python源码)
原文链接(本人):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
登陆参数和响应

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

通过分析代码可以知道用户名是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
请求参数和响应

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

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

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源码)的更多相关文章
- 微信小程序自动化测试最佳实践(附 Python 源码)
本文为霍格沃兹测试学院测试大咖公开课<微信小程序自动化测试>图文整理精华版. 随着微信小程序的功能和生态日益完善,很多公司的产品业务形态逐渐从 App 延升到微信小程序.微信公众号等.小程 ...
- 最优路径算法合集(附python源码)(原创)
主要的最优(最短)路径算法: 一.深度优先算法:二.广度优先算法:三.Dijstra最短路径:四.floyd最短路径(待): 一.深度优先算法 图的深度优先搜索(Depth First Search) ...
- 分享一个难得的YiBo微博客户端应用源码Android版
今天给大家分享一款,YiBo微博客户端应用源码,这是一款专为Android用户打造的聚合型微博客户端,完美支持新浪微博.腾讯微博.搜狐微博.网易微博和饭否五个微博平台,界面清爽,使用简单轻巧,支持多账 ...
- Asp.net MVC集成Google Calendar API(附Demo源码)
Asp.net MVC集成Google Calendar API(附Demo源码) Google Calendar是非常方便的日程管理应用,很多人都非常熟悉.Google的应用在国内不稳定,但是在国外 ...
- python源码书籍
<Python源码剖析>一书现在很难买到,目前大部分都是电子书. 为了更好地利用Python语言,无论是使用Python语言本身,还是将Python与C/C++交互使用,深刻理解Pytho ...
- 读python源码--对象模型
学python的人都知道,python中一切皆是对象,如class生成的对象是对象,class本身也是对象,int是对象,str是对象,dict是对象....所以,我很好奇,python是怎样实现这些 ...
- VS2013编译python源码
系统:win10 手头有个python模块,是用C写的,想编译安装就需要让python调用C编译器.直接编译发现使用的是vc9编译,不支持C99标准(两个槽点:为啥VS2008都还不支持C99?手头这 ...
- 三种排序算法python源码——冒泡排序、插入排序、选择排序
最近在学习python,用python实现几个简单的排序算法,一方面巩固一下数据结构的知识,另一方面加深一下python的简单语法. 冒泡排序算法的思路是对任意两个相邻的数据进行比较,每次将最小和最大 ...
- 《python源码剖析》笔记一——python编译
1.python的架构: 2.python源码的组织结构: 3.windows环境下编译python:
随机推荐
- 剑指offer面试题16:反转链表
题目:定义一个函数,输入一个链表的头结点,反转该链表并输出反转后的链表的头结点.解题思路:单向链表只能实现单向遍历,改变链表方向就是要把当前链表的节点指向它的前一个节点,一旦当前链表指向发生了变化,就 ...
- 《JavaScript》高级程序设计第21章:Ajax和Comet,jsonp
一.创建XMLHttpRequest对象 二.XHR的用法 五.跨域资源共享 六.其他跨域技术七.安全七.安全 1. 图像Ping 2. JSONP(JSON with padding,填充式JSON ...
- Jenkins的初级应用(2)-Invoke Phing targets
Invoke Phing targets这个插件主要是读取xml形式包括自动化测试打包部署的配置文件,然后根据流程走下来.用phing命令读取并执行xml配置文件,然后执行定义的步骤.比如check. ...
- lazy-init 懒加载的艺术
懒加载是一种加载方式,加载单例对象一般有两种方式,一是在启动时就立即创建好,另一种则是在需要用到的时候再去加载即懒加载.懒加载一般会针对单例场景,且一般是针对在加载消耗较大费时,且不一定会用到的场景. ...
- java:当字符串为We Are Happy.经过替换之后的字符串为We%20Are%20Happy
方法一: public class Solution { public String replaceSpace(StringBuffer str) { String a=str.toString(); ...
- git添加远程仓库
3种方式 # 未创建项目目录git clone https://github.com/xxx/zzz.git [这里指定目标文件夹,不填写,默认创建 zzz目录] # 已存在项目文件,未设置远程仓库的 ...
- cpuset
本文属于内核文档翻译,翻译时没有遵照原文,添加了一些作者的理解,目的不是为了替代内核文档,可以作为阅读内核文档的引子,作者鼓励读者阅读原有的内核文档.原文参考3.10.514内核文档cpuset.tx ...
- Python编程Day6——元组类型、字典类型、集合
一.元组类型(tuple) 1.用途:记录多个值,当多个值没有改变的需求此时元组更为合适 2.定义:在()内用逗号分隔开多个任意类型的值(参数为for可以循环的对象) 3.常用操作: 索引(正取向+反 ...
- Java多线程之三volatile与等待通知机制示例
原子性,可见性与有序性 在多线程中,线程同步的时候一般需要考虑原子性,可见性与有序性 原子性 原子性定义:一个操作或者多个操作在执行过程中要么全部执行完成,要么全部都不执行,不存在执行一部分的情况. ...
- Java NIO的工作方式
1.BIO带来的挑战 BIO即阻塞IO,不管是磁盘IO,还是网络IO,数据在写入OutputStream或者从InputStream读取时都有可能发生阻塞,一旦有阻塞,当前线程将会被挂起,即线程进入非 ...