1. url: https://weibo.com/

2. target: 登录

3. 分析。由于需要填写验证码,本篇只分析破解用户名和密码加密部分,不做验证码识别。

3.1 老规矩,F12,随便输入一个帐号密码,点击登录,看看都发起了哪些请求。找到其中的post请求(一般登录都是post请求)。我们找到了登录请求之后,看看都需要哪些参数,加密的参数基本如下:

也就su,servertime,nonce,rsakv,sp几个参数作了加密。而servertime是时间戳,over。nonce,rsakv这两个都是可以在上一个请求的响应中找到的,over。只剩下su和sp。猜测一个是帐号一个是密码。就先破sp吧。

3.2 直接搜sp肯定是不方便的,目标太大,那就搜一下它上下看起来相关的,而且唯一性比较强的参数,pwencode。看名字也知道跟密码编码有关,那就搜它吧。

很快就找到了下面这些东西:

3.3 打断点调试,su就是su,b就是sp 。

3.4 扣js代码过程,略。就一个一个函数地搞就可以。

4. python代码:

from afterWork.config import proxies, userAgent
import requests
import json
import execjs
import time
import re
import random def getJsCode():
with open('jsCode.js', 'r') as f:
jsCode = f.read()
return jsCode def getSu(ctx, account):
su = ctx.call('getUser', account)
# print(su)
return su def getServerTimeNoncePubkey(su):
# print('1577263612028')
ts = re.sub(r'\.', '', str(time.time()))
ts = ts[:13]
data = {
'entry': 'weibo',
'callback': 'sinaSSOController.preloginCallBack',
'su': su,
'rsakt': 'mod',
'checkpin': '',
'client': 'ssologin.js(v1.4.15)',
'_': ts
} res = requests.get(url='https://login.sina.com.cn/sso/prelogin.php',
params=data)
# print(res.text)
# print(json.loads(res.text.lstrip('sinaSSOController.preloginCallBack(').strip(')')))
nonce = json.loads(res.text.lstrip('sinaSSOController.preloginCallBack(').strip(')'))['nonce']
pubkey = json.loads(res.text.lstrip('sinaSSOController.preloginCallBack(').strip(')'))['pubkey']
servertime = json.loads(res.text.lstrip('sinaSSOController.preloginCallBack(').strip(')'))['servertime']
rsakv = json.loads(res.text.lstrip('sinaSSOController.preloginCallBack(').strip(')'))['rsakv']
pcid = json.loads(res.text.lstrip('sinaSSOController.preloginCallBack(').strip(')'))['pcid']
return servertime, pubkey, nonce, rsakv, ts, pcid def getLoginData(su, serverTime, nonce, rsakv, sp, ts):
# print('1577263612028')
ts = re.sub(r'\.', '', str(time.time()))[:-4]
# url='https://login.sina.com.cn/sso/login.php?client=ssologin.js(v1.4.15)&_={}'.format(ts)
headers = {
'User-Agent': 'Opera/9.80 (Windows NT 6.0) Presto/2.12.388 Version/12.14',
'Host': 'login.sina.com.cn',
'Referer': 'https://www.weibo.com/login.php',
}
data = {
'entry': 'sso',
'gateway': '',
'from': 'null',
'savestate': '',
'useticket': '',
'pagerefer': 'https://login.sina.com.cn/sso/login.php?client=ssologin.js(v1.4.19)',
'vsnf': '',
'su': su,
'service': 'sso',
'servertime': serverTime,
'nonce': nonce,
'pwencode': 'rsa2',
'rsakv': rsakv,
'sp': sp,
'sr': '1536*864',
'encoding': 'UTF-8',
'cdult': '',
'domain': 'sina.com.cn',
'prelt': '',
'returntype': 'TEXT',
} res = requests.post(url='https://login.sina.com.cn/sso/login.php?client=ssologin.js(v1.4.15)&_={}'.format(ts),
data=data,
headers=headers,
timeout=10) res.encoding = 'GBK'
# print(res.text)
loginResult = json.loads(res.text)
print(loginResult)
return def getSp(ctx, pw, serverTime, nonce, pubKey):
sp = ctx.call('getPw', pw, serverTime, nonce, pubKey)
# print(sp)
return sp def mainFun():
account = '你的帐号'
pw = '你的密码'
ctx = execjs.compile(getJsCode())
su = getSu(ctx, account) serverTime, pubKey, nonce, rsakv, ts, pcid = getServerTimeNoncePubkey(su)
sp = getSp(ctx, pw, serverTime, nonce, pubKey)
getLoginData(su, serverTime, nonce, rsakv, sp, ts)
# login(account, sp, pcid, serverTime, nonce) if __name__ == '__main__':
mainFun()

结果:

到这里,已经完成了登录,可以用session会话携带cookie去访问一些需要登录才能访问的信息。

学习交流,勿作他用。

js加密(八)新浪微博登录的更多相关文章

  1. Python 爬虫js加密破解(四) 360云盘登录password加密

    登录链接:https://yunpan.360.cn/mindex/login 这是一个md5 加密算法,直接使用 md5加密即可实现 本文讲解的是如何抠出js,运行代码 第一部:抓包 如图 第二步: ...

  2. c#获取新浪微博登录cookie

    用新浪微博api收集数据有诸多限制,每小时只能调用官方api函数150次,认证也很麻烦.因此想通过爬网页的方式来收集数据.访问新浪微博用户网页首先需要登录,登录获取cookie后可直接获取网页数据,无 ...

  3. 第三方登录 QQ登录 人人网登录 新浪微博登录

    http://www.pp6.cn/Index.aspx http://www.pp6.cn/Login.aspx 网站有自己的账号系统,这里使用的第三方登录仅仅是获取第三方账号的唯一id,昵称,性别 ...

  4. AES加密解密——AES在JavaWeb项目中前台JS加密,后台Java解密的使用

    一:前言 在软件开发中,经常要对数据进行传输,数据在传输的过程中可能被拦截,被监听,所以在传输数据的时候使用数据的原始内容进行传输的话,安全隐患是非常大的.因此就要对需要传输的数据进行在客户端进行加密 ...

  5. python爬虫之新浪微博登录

    fiddler 之前了解了一些常见到的反爬措施,JS加密算是比较困难,而微博的登录中正是用JS加密来反爬,今天来了解一下. 分析过程 首先我们去抓包,从登录到微博首页加载出来的过程.我们重点关注一下登 ...

  6. 使用selenium进行密码破解(绕过账号密码JS加密)

    经常碰到网站,账号密码通过js加密后进行提交.通过burp拦截抓到的账号密码是加密后的,所以无法通过burp instruder进行破解.只能模拟浏览器填写表单并点击登录按钮进行破解.于是想到了自动化 ...

  7. qq登录,新浪微博登录 ,接口开发

    给linux命令在线中文手册加了,qq登录和新浪微博登录,认证用的是auth2.0,并且用了js api和php api相结合的方式来做的.个人觉得这种方式,兼顾安全和人性化.以前写过一篇关于申请的博 ...

  8. js加密后台加密解密以及验证码

    该文档为转载内容: 加密解密 1 前端js加密概述 2 前后端加密解密 21 引用的js加密库 22 js加密解密 23 Java端加密解密PKCS5Padding与js的Pkcs7一致 验证码 1 ...

  9. 昆仑游戏[JS加密修改]

    昆仑游戏:http://www.kunlun.com/index.html JS加密修改 BigTools=window.BigTools;//重点 RSAKeyPair=window.RSAKeyP ...

  10. web主题公园版权信息破解:script.js加密文件

    很多人会使用web主题公园网站的免费worldpress主题,但它的主题又都被加了版权信息,故意让人找不到版权信息的修改位置. 你如果去footer.php里面删除版权信息(技术支持:web主题公园) ...

随机推荐

  1. 0120 springboot集成Mybatis和代码生成器

    在日常开发中,数据持久技术使用的架子使用频率最高的有3个,即spring-jdbc , spring-jpa, spring-mybatis.详情可以看我之前的一篇文章spring操作数据库的3个架子 ...

  2. Python发带附件的邮件

    python实现发送带附件的邮件 import smtplib from email.mime.text import MIMEText from email.mime.multipart impor ...

  3. OpenCV中imread失败cvLoadImage成功

    MYLAF 环境说明 编程环境:Windows 10(64bit), VS2013, OpenCV 2.4.12; 编程语言:C/C++: MYLAF 现象 在代码中,调用imread读取图片失败,但 ...

  4. 《深入理解Java虚拟机》读书笔记五

    第六章 类文件结构 1.无关性的基石 各种不同平台的虚拟机与所有平台都统一使用程序存储格式——字节码是构成平台无关的基石. 实现语言无关性的基础仍然是虚拟机和字节码存储格式,Java虚拟机不和包括Ja ...

  5. iOS13禁用深色模式

    全局禁用深色模式(暗黑模式)在Info.plist中增加UIUserInterfaceStyle,值为Light,如下 <key>UIUserInterfaceStyle</key& ...

  6. python 数组array的一些操作

    对一些特定大小的元素进行操作 1.将数组Arr中大于100的值都设定为100 Arr[Arr >100] = 100    利用array索引的内置 numpy.minimum(Arr, 100 ...

  7. leetcode 1214 Two Sum BSTs

    function rob(a, b, target) { var hash = {} var stack = [a] while (queue.length) { var node = stack.p ...

  8. wap网站开发小记(转载)

    一:网页的一些标记 1:声明 <!DOCTYPE html PUBLIC "-//WAPFORUM//DTD XHTML Mobile 1.0//EN" "http ...

  9. jenkins部署到Tomcat下

    一.首选要下载与安装jdk,因为需要在Java环境下面运行,安装好jdk后配置java环境变量(jdk环境变量的配置网上很多) 我本人安装的是jdk1.8 二.安装好jdk后,需要下载tomcat,这 ...

  10. 【转】git rebase详解

    git合并代码方式主要有两种方式,分别为:1.merge处理,这是大家比较能理解的方式.2.rebase处理,中文此处翻译为衍合过程. git rebase操作讲解例子: cd /usr/local/ ...