js加密(八)新浪微博登录
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加密(八)新浪微博登录的更多相关文章
- Python 爬虫js加密破解(四) 360云盘登录password加密
登录链接:https://yunpan.360.cn/mindex/login 这是一个md5 加密算法,直接使用 md5加密即可实现 本文讲解的是如何抠出js,运行代码 第一部:抓包 如图 第二步: ...
- c#获取新浪微博登录cookie
用新浪微博api收集数据有诸多限制,每小时只能调用官方api函数150次,认证也很麻烦.因此想通过爬网页的方式来收集数据.访问新浪微博用户网页首先需要登录,登录获取cookie后可直接获取网页数据,无 ...
- 第三方登录 QQ登录 人人网登录 新浪微博登录
http://www.pp6.cn/Index.aspx http://www.pp6.cn/Login.aspx 网站有自己的账号系统,这里使用的第三方登录仅仅是获取第三方账号的唯一id,昵称,性别 ...
- AES加密解密——AES在JavaWeb项目中前台JS加密,后台Java解密的使用
一:前言 在软件开发中,经常要对数据进行传输,数据在传输的过程中可能被拦截,被监听,所以在传输数据的时候使用数据的原始内容进行传输的话,安全隐患是非常大的.因此就要对需要传输的数据进行在客户端进行加密 ...
- python爬虫之新浪微博登录
fiddler 之前了解了一些常见到的反爬措施,JS加密算是比较困难,而微博的登录中正是用JS加密来反爬,今天来了解一下. 分析过程 首先我们去抓包,从登录到微博首页加载出来的过程.我们重点关注一下登 ...
- 使用selenium进行密码破解(绕过账号密码JS加密)
经常碰到网站,账号密码通过js加密后进行提交.通过burp拦截抓到的账号密码是加密后的,所以无法通过burp instruder进行破解.只能模拟浏览器填写表单并点击登录按钮进行破解.于是想到了自动化 ...
- qq登录,新浪微博登录 ,接口开发
给linux命令在线中文手册加了,qq登录和新浪微博登录,认证用的是auth2.0,并且用了js api和php api相结合的方式来做的.个人觉得这种方式,兼顾安全和人性化.以前写过一篇关于申请的博 ...
- js加密后台加密解密以及验证码
该文档为转载内容: 加密解密 1 前端js加密概述 2 前后端加密解密 21 引用的js加密库 22 js加密解密 23 Java端加密解密PKCS5Padding与js的Pkcs7一致 验证码 1 ...
- 昆仑游戏[JS加密修改]
昆仑游戏:http://www.kunlun.com/index.html JS加密修改 BigTools=window.BigTools;//重点 RSAKeyPair=window.RSAKeyP ...
- web主题公园版权信息破解:script.js加密文件
很多人会使用web主题公园网站的免费worldpress主题,但它的主题又都被加了版权信息,故意让人找不到版权信息的修改位置. 你如果去footer.php里面删除版权信息(技术支持:web主题公园) ...
随机推荐
- Java的三种循环:1、for循环 2、while循环 3、do...while循环
Java的三种循环 Java三种循环结构: 1.for循环 2.while循环 3.do...while循环 循环结构组成部分:1.条件初始化语句,2.条件判断语句 , 3.循环体语句,4.条件控制语 ...
- [Luogu]中位数
Description Luogu1168 Solution 一种神奇的做法:开一个大根堆和小根堆,保证大根堆比小根堆多1个元素,且大根堆堆顶元素比小根堆堆顶元素小,那么大根堆堆顶就是中位数.插入的时 ...
- 实用 SQL 语句
1. 创建 1.1 创建数据库 语法:create database db_name 示例:创建应用数据库 awesome_app sqlcreate database `awesome_app` 复 ...
- unity命令行参数
Typically, Unity will be launched by double-clicking its icon from the desktop but it is also possib ...
- Linux - Deepin Linux,intel无线网卡下载慢、不能跑满宽带的解决方案
解决方案 将 /etc/modprobe.d/iwlwifi.conf中的11n_disable=1删掉,重启. 参考 https://bbs.deepin.org/forum.php?mod=vie ...
- jquery easyui combogrid Uncaught TypeError:Cannot read property
================================ ©Copyright 蕃薯耀 2020-01-07 https://www.cnblogs.com/fanshuyao/ 一.问题描述 ...
- HTML的网页基本结构
写在前面 <!DOCTYPE html><html lang="en"><head> <meta charset=& ...
- Makefile中的wildcard/notdir/patsubst
在Makefile规则中,通配符会被自动展开. 但在变量的定义和函数引用时,通配符将失效.这种情况下如果需要通配符有效,就需要使用函数“wildcard”,它的用法是:$(wildcard PATTE ...
- 【c++】零基础的自修课 01-开发工具的安装(code::blocks)
1/开发工具的下载地址: ·(选用 visual studio开发工具,有区分mac和windows版本)https://visualstudio.microsoft.com/zh-hans/down ...
- net core,redis的安装和试用
一.window上面安装reids 在github上面下载,地址 安装完成后,进入安装目录打开redis服务, 这里双击Redis服务器即可启动Redis. 二.安装redis可视化工具 命令行操作r ...