当前位置:主页 > 查看内容

python-js逆向人人网登录

发布时间:2021-06-09 00:00| 位朋友查看

简介:python-js逆向人人网登录 一项目准备 二项目分析 三 简易代码分享 一项目准备 环境win10 python3.7 开发工具pycharm 所需工具包requestsjs2py 目标网址链接: 人人网 二项目分析 获取目标的登录信息 发现手机端的数据比web端的数据更简洁抓包跟换成手机端的……

一项目准备

环境: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)

;原文链接:https://blog.csdn.net/qq_45075118/article/details/115602140
本站部分内容转载于网络,版权归原作者所有,转载之目的在于传播更多优秀技术内容,如有侵权请联系QQ/微信:153890879删除,谢谢!

推荐图文


随机推荐