该文章主要提供交流学习使用,请勿利用其进行不当行为!
如本篇文章侵犯了贵公司的隐私,请联系我立刻删除!

个人博客:http://www.feastawlisao.com/
欢迎关注个人公众号:pythonORjs

今天我们来研究一下新浪微博的参数加密,也来做一下模拟登陆,今天全方位详细讲解撒。
这里我们登陆的网址为https://login.sina.com.cn/signup/signin.php,因为新浪的账号各个板块是互通的,登录后获取cookie就能访问新浪微博了,至于抓包工具,这里就暂时用不到了,推荐用charles,因为市面上流行的都是Fiddler,我感觉不太顺手,个人喜好哈,进入正题。
这里我们打开开发者工具,然后输入账号,密码,密码先输入错误的,,方便我们更好的抓包。

这里我们可以看到,返回两个url,我们先研究第一个url。参数里各种莫名其妙的东西,无大碍,那我们就先研究一下,entry,callback,rsakt,client,当前都是固定的,_是时间戳,su是什么呢,我们看一下,可能对于经常玩js的人一眼就看出来了,su参数是base64编码。

这里就不在搜索su参数在js里面怎么实现的了,因为这个参数太多了,这里直接贴出来js代码。

su参数知道怎么生成后,我们用python代码进行get请求,如下,我们返回的参数都先取出来,以备后续使用。为什么我没取出来完,啊哈哈哈哈,因为我已经知道哪些有用了。。

接着我们看下面请求的url,分析它的参数,然后一看一大堆参数,不要慌,问题不大,慌也没用,我们分析一波,此处讲重要的参数,su参数不就是我们的用户名,然后base64的结果,servertime还记得吗??上一个url返回的参数,nonce,rsaku也是如此。sp参数就是密码,经过了一系列的加密,perlt是随机生成的数字。好了,分析完,那我们找sp参数的生成过程吧。

这里有一个坑,因为,这里有一个参数,pwencode=rsa2,告诉我们密码是rsa加密生成的,然后再看前面返回的publickey值,刚好符合rsa的加密规则,然后就用python写rsa直接加密,然后发现,凉凉,还是错的,为什么呢,听我一一道来,哈哈哈哈哈哈哈哈。

接下来我们开始搜索参数,然后发现,sp参数多的超乎我们的想象,,,太多了。

这里可以这样搜,因为加密的是密码,我们可以搜password,passwd,pwd等等,也可以搜密码输入框的id标签,或者class标签。

此处我们搜索发现,在ssologin.js里面发现可疑的地方。password=rsa,nonce,servertime等等参数,那我们就试一下。

在这里有个if判断语句,注意一下。

我们开始下上断点,开始调试,下完断点后,点击登陆按钮。

然后程序会断下来,等待下一步操作。具体操作可搜索谷歌调试。

然后一步一步执行,看到rsaPubkeys,这个key是不是很眼熟呀,就是第一个请求url返回的pubkey,关于rsa加密的原理可自行百度。

我们接着往下调试,password 生成原理就是, encrypt函数里面传入三个参数,如下图,servertime,nonce字符串相加,中间由空格\t隔开,然后加上\n换行,再加上原始的password,就是没加密之前的密码。

此处只用python语言实现,如需js实现,可留言。因为python实现rsa加密有多种方法,此处只演示一种。有人说,为什么和我第一次加密的结果不一样,因为rsa是一直都在变化的,具体搜索rsa加密原理。

此处请特别注意,有两点。

1.post提交参数的时候,浏览器是没有url这个参数的,提交必须加上,要不然无法完成二次验证。

微博有二次验证,注意,注意,特别注意,别以为post成功后就能获取cookie登陆了,需要二次验证。

data全部参数如下:

    data = {'entry': 'account','gateway': '1','from': 'null','savestate': '30','useticket': '0','pagerefer': '','vsnf': '1','su': su,'service': 'account','servertime': servertime,'nonce': nonce,'pwencode': 'rsa2','rsakv': rsakv,'sp': sp,'sr': '1920*1080','encoding': 'UTF-8','cdult': '3','domain': 'sina.com.cn','prelt': random.randint(1, 100),'url': 'https://weibo.com/ajaxlogin.php?framelogin=1&callback=parent.sinaSSOController.feedBackUrlCallBack','returntype': 'TEXT','door': '',  # 验证码,小号需要填写,,,小号还需要二次点触验证}

必须添加url这个参数,要不然无法返回,ticket参数,请注意。

二次验证所需要的参数如下,ticket参数就是上一步提交post返回的参数,ssosavestate,生成方式在js里面,,但是根据实验,可以写成任意时间戳。_是时间戳。然后提交请求

提交成功后,获取其cookie就行了,然后携带cookie进行访问数据。

然后你就会发现一个更重要的问题,就是,成功了,

本次分享到处结束,,如需需要js代码,或者python完整代码,请留言!谢谢!

新浪微博模拟登陆passwd参数rsa解密相关推荐

  1. python如何实现模拟登录_超详细的Python实现新浪微博模拟登陆(小白都能懂)

    最近由于需要一直在研究微博的爬虫,第一步便是模拟登陆,从开始摸索到走通模拟登陆这条路其实还是挺艰难的,需要一定的经验,为了让朋友们以后少走点弯路,这里我把我的分析过程和代码都附上来. 首先,我们先用正 ...

  2. 新浪微博模拟登陆 java

    新浪微博模拟登陆 java 第一篇博客把经历记录下来,最近要做微博模拟登陆,网上找了大量的代码登陆都很繁琐,终于皇天不负有心人,找到了段简单的代码,也学习了. package us.codecraft ...

  3. python新浪微博模拟登陆

    一 一直苦恼于新浪微博API开放的接口限制太多.只能用爬虫获取数据,然后我花了很长时间去找模拟登陆代码,根本没有一个能成功的.于是我就参考了谋篇文章,对代码做了些小修改,终于可以用了. 相关参考可以看 ...

  4. 新浪微博模拟登陆并发文

    通过新浪通行证登陆微博,曲线救国,然后再进行模拟发文 <?php /*$temp = explode(' ',microtime()); $num = floor($temp[0]*1000); ...

  5. Python模拟登陆新浪微博

    本文转自:http://blog.csdn.net/andrewseu/article/details/48730735 前几天想在学校论坛上淘一个二手蓝牙鼠标,没有时间盯着论坛就写了Python程序 ...

  6. 超详细的Python实现百度云盘模拟登陆(模拟登陆进阶) 1

    这是第二篇从简书搬运过来的文章(大家别误会,是我原创的).因为前一篇文章,我看反响还挺好的,所以把这篇也搬运过来了,其实目的还是为宣传自己的分布式微博爬虫(该项目的内容和工作量都很饱满啊,大家如果觉得 ...

  7. Python 模拟登陆百度云盘实战教程

    点击上方"程序员大咖",选择"置顶公众号" 关键时刻,第一时间送达! 今天我给大家讲讲如何模拟登陆百度云盘(该分析过程也适用于百度别的产品,比如模拟登陆百度搜索 ...

  8. 教程 | Python实战 模拟登陆百度云盘

    今天我给大家讲讲如何模拟登陆百度云盘(该分析过程也适用于百度别的产品,比如模拟登陆百度搜索首页,它们的加密流程完全一样,只是提交参数有微小差别). 阅读文章之前,有一些东西需要给大家阐述: 本文并没有 ...

  9. Python高级爬虫开发,高难度JS解密教程,绝地求生模拟登陆!

    前言 这篇文章因为涉及到JS解密部分,所以难度比较高,Python基础比较薄弱的同学可以来看看思路. 开始 进入到该网站后我们可以看到如下界面,今天要做的内容就是模拟登陆 那么咱们首先抓到登陆的包看看 ...

  10. python模拟登录吃鸡_Python高级爬虫开发,高难度JS解密教程,绝地求生模拟登陆!...

    前言 这篇文章因为涉及到JS解密部分,所以难度比较高,Python基础比较薄弱的同学可以来看看思路. 开始 进入到该网站后我们可以看到如下界面,今天要做的内容就是模拟登陆 那么咱们首先抓到登陆的包看看 ...

最新文章

  1. oracle 年龄计算 岁 月 天
  2. linux-``反引号
  3. 剑指Offer-LeetCode刷题
  4. C++11的静态断言
  5. Mysql 插入中文错误:Incorrect string value: '...' for column 'xx' at row 1
  6. Liunx静态库和动态库
  7. ionic 环境安装
  8. 为什么谷歌被骂上热搜一点也不冤,详解FLoC背后联邦计算
  9. Python urllib – Python 3 urllib
  10. (1)数据结构-绪论
  11. idea中不重启服务器更改代码(使用jrebel)
  12. 一文看懂中国银联CUPS清结算流程
  13. OpenGL是什么?Win10+VS2019下搭建glfw+glad开发环境
  14. 用户分层 | 用户画像
  15. 如何简单理解ngnix的反向代理
  16. [ManjaroLinux]-虚拟机安装
  17. 为树莓派增加MIDI接口
  18. Android PPP协议
  19. VMware Workstation 在此主机上不支持嵌套虚拟化。模块“HV”启动失败。未能启动虚拟机。
  20. 怎么修改SQL的密码?

热门文章

  1. 沁恒三模键盘方案测试体验
  2. java 特立独行的幸福
  3. 飞天熊猫游戏源代码android文本
  4. 接口与多态:模拟物流快递系统程序设计实验
  5. 『HDU 5773』The All-purpose Zero
  6. 医学影像处理科研训练
  7. sci计算机论文发表论文格式,SCI论文发表的格式以及字体的要求是什么?
  8. 【day13】【洛谷算法题】-P5713洛谷团队系统-刷题反思集[入门2分支结构]
  9. 『常识』印刷纸张尺寸对比表
  10. 运维小知识---If you insist running as root, then set the environment variable RUN_AS_USER=root...