环境:win10, python3.7
开发工具:pycharm
所需工具包:requests,js2py
目标网址链接: 人人网
获取目标的登录信息
发现手机端的数据比web端的数据更简洁,抓包跟换成手机端的
不要在一棵树上吊死
找到登录页面
输入账号密码(最好是先输入错误的)抓取到登录的数据接口
接口网址:http://activity.renren.com/livecell/ajax/clog
请求方法:post
请求参数
准备开始搬砖
phoneNum 是账号
password是加密的
rkey是变化的
查找password的生成方法
得出两个数据的来源
解读js代码
rkey是由js请求的到的json数据 需要想对rkey进行请求
import requests # 发送请求的工具包
# 获取到网站的cookie 实现状态保存
session = requests.session()
session.headers = {
'User-Agent': 'Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.114 Mobile Safari/537.36'
}
response = session.get('http://activity.renren.com/livecell/rKey').json()
print(response)
n = response["data"]
setMaxDigits,RSAKeyPair,encryptedString 来自于不同的js文件
需要将这3个js文件代码加载到js环境
确定关键的js代码
以及js代码需要传递的参数
t = {
"password": account.password
}
but_js = session.get('http://s.xnimg.cn/a85738/wap/mobile/wechatLive/js/Barrett.js').content.decode()
big_js = session.get('http://s.xnimg.cn/a85738/wap/mobile/wechatLive/js/BigInt.js').content.decode()
rsa_js = session.get('http://s.xnimg.cn/a85738/wap/mobile/wechatLive/js/RSA.js').content.decode()
# 创建js对象
js_ven = js2py.EvalJs()
js_ven.execute(big_js)
js_ven.execute(rsa_js)
js_ven.execute(but_js)
js_ven.n = n
js_ven.t = t
data_js = """
t.password = t.password.split("").reverse().join(""),
setMaxDigits(130);
var o = new RSAKeyPair(n.e,"",n.n)
, r = encryptedString(o, t.password);
"""
js_ven.execute(data_js)
print(js_ven.r)
本文章只提供学习,切勿用在其他用途
import js2py # 讲js代码转换成python能运行的
import account
import requests
# 获取到网站的cookie 实现状态保存
session = requests.session()
session.headers = {
'User-Agent': 'Mozilla/5.0 (Linux; Android 6.0; Nexus 5 Build/MRA58N) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.114 Mobile Safari/537.36'
}
response = session.get('http://activity.renren.com/livecell/rKey').json()
print(response)
n = response["data"]
t = {
"password": account.password
}
but_js = session.get('http://s.xnimg.cn/a85738/wap/mobile/wechatLive/js/Barrett.js').content.decode()
big_js = session.get('http://s.xnimg.cn/a85738/wap/mobile/wechatLive/js/BigInt.js').content.decode()
rsa_js = session.get('http://s.xnimg.cn/a85738/wap/mobile/wechatLive/js/RSA.js').content.decode()
# 创建js对象
js_ven = js2py.EvalJs()
js_ven.execute(big_js)
js_ven.execute(rsa_js)
js_ven.execute(but_js)
js_ven.n = n
js_ven.t = t
data_js = """
t.password = t.password.split("").reverse().join(""),
setMaxDigits(130);
var o = new RSAKeyPair(n.e,"",n.n)
, r = encryptedString(o, t.password);
"""
js_ven.execute(data_js)
print(js_ven.r)
data = {
'phoneNum': account.phoneNum,
'password': js_ven.r,
'c1': '-100',
'rKey': n['rkey']
}
url = "http://activity.renren.com/livecell/ajax/clog"
result = session.post(url, data=data)
print(result.text)
简介 “ 大家好我是帅哥欢迎来到帅哥的程序人生我会把经历分享出来助你了解圈内...
继 Australis 和 Photon 之后,Mozilla 现又酝酿为 Firefox 带来名为Proton的全...
本文转载自微信公众号「Linux开发那些事儿」,作者 LinuxThings 。转载本文请联...
console.log ,作为一个前端开发者,可能每天都会用它来分析调试,但这个简单函...
2月26日消息 众所周知,Windows 10 的安全更新和其他重要累计更新通常是在同一天...
互联网业务往往使用MySQL数据库作为后台存储,存储引擎使用InnoDB。我们针对互联...
开发过程中,我们经常会遇到代码回滚的情况。正常人都知道,git 回滚有两大宝: ...
前言 aop即是面向切面编程,众多Aop框架里Castle是最为人所知的,另外还有死去的...
一、Postman背景介绍 用户在开发或者调试网络程序或者是网页B/S模式的程序的时候...
不少Windows 10用户之前都抱怨一个问题,那就是系统的屏幕出现了渲染问题,而微...