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. 微服务读取不到config配置中心配置信息,Spring Boot无法找到PropertySource:找不到标签Could not locate PropertySource: label not found

    服务出现报这个错, o.s.c.c.c.ConfigServicePropertySourceLocator - Could not locate PropertySource: label not ...

  2. AcWing 1019. 庆功会 多重背包求max

    //多重背包 max #include <iostream> using namespace std; ; int n, m; int f[N]; int main() { cin > ...

  3. LED Keychain - Widely Used Logo Item

    The LED keychain makes it easy for people to carry their keys with them and carry them with them. It ...

  4. 【Python】BMI指数 计算器

    身体质量指数 (Body Mass Index, 简称BMI), 亦称克托莱指数, 是目前国际上常用的衡量人体胖瘦程度以及是否健康的一个标准.BMI 值超标,意味着你必须减肥了. 在线版:https: ...

  5. Oracle用户权限授权以及索引、同义词、分区

    本文为原创,如需转载,请标明出处 http://www.cnblogs.com/gudu1/p/7601765.html ---- 用户权限 1.创建表空间 (创建用户之前需要创建表空间和临时表空间, ...

  6. C语言数据结构——第四章 串

    四.串 4.1-串的基本概念 串的定义 串是由数字.字母或其他字符组成的有限序列,一般记为 StringName = “a[0]a[1]a[2]···a[i]···a[n-1]”(n>0,0&l ...

  7. 2D TOOLKIT备忘录

    通过Clip名称更改动画片段 // 通过clip名称获取clip实例 tk2dSpriteAnimationClip clip = childrenAnimator.GetClipByName(&qu ...

  8. [CERC2014] Outer space invaders

    题目链接 题意 你受到一群外星人的攻击,第 $i$ 个外星人会在 $ai$ 时间出现,与你的距离为 $di$,且必须在 $bi$ 时间前消灭.你有一个区域冲击波器,每次攻击可以设定一个功率 $R$,这 ...

  9. cvtColor(src, src_gray, CV_BGR2GRAY)报错

    利用cvtColor 进行灰度转换时,不能将  灰度图 转为灰度图,所以在转换前,需对原始图像进行判断. 将这个改成以下 int main(int argc, char* argv[]) { Mat ...

  10. mongo备份操作

    数据备份mongodump 可以用mongodump 来做MongoDB 的库或表级别的备份,下面举例说明: >c:\mongo\bin\mongodump -d  xxxx数据库 此时会在当前 ...