首先登录抓包
直接搜索 persistent 因为 password 比较大众
断点调试
把整个js 复制出来 node.js 调用 然后缺什么 补什么
import requests
import execjs
def login(phone,pwd):
url = 'https://tiku.fenbi.com/api/users/loginV2?kav=12&app=web'
h = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36'
}
ctx = execjs.compile(open('test.js','r').read())
get_pwd = ctx.call('get_pwd',pwd)
data = {
'persistent':'true',
'app': 'web',
'phone': phone,
'password': get_pwd,
}
s = requests.Session()
res = s.post(url,data=data)
shouye = s.get('https://fenbi.com/page/home')
print(get_pwd)
print(res.status_code)
print(res.text)
print(shouye.text)
login('手机','密码')
var window = {};
var navigator = {};
(function(av) {
function l() {
this.i = 0;
this.j = 0;
this.S = new Array()
}
function f(aI) {
var aH, z, aG;
for (aH = 0; aH < 256; ++aH) {
this.S[aH] = aH
}
z = 0;
for (aH = 0; aH < 256; ++aH) {
z = (z + this.S[aH] + aI[aH % aI.length]) & 255;
aG = this.S[aH];
this.S[aH] = this.S[z];
this.S[z] = aG
}
this.i = 0;
this.j = 0
}
function b() {
var z;
this.i = (this.i + 1) & 255;
this.j = (this.j + this.S[this.i]) & 255;
z = this.S[this.i];
this.S[this.i] = this.S[this.j];
this.S[this.j] = z;
return this.S[(z + this.S[this.i]) & 255]
}
l.prototype.init = f;
l.prototype.next = b;
function au() {
return new l()
}
var O = 256;
var n;
var V;
var ag;
function d(t) {
V[ag++] ^= t & 255;
V[ag++] ^= (t >> 8) & 255;
V[ag++] ^= (t >> 16) & 255;
V[ag++] ^= (t >> 24) & 255;
if (ag >= O) {
ag -= O
}
}
function U() {
d(new Date().getTime())
}
if (V == null) {
V = new Array();
ag = 0;
var K;
if (navigator.appName == "Netscape" && navigator.appVersion < "5" && av.crypto) {
var H = av.crypto.random(32);
for (K = 0; K < H.length; ++K) {
V[ag++] = H.charCodeAt(K) & 255
}
}
while (ag < O) {
K = Math.floor(65536 * Math.random());
V[ag++] = K >>> 8;
V[ag++] = K & 255
}
ag = 0;
U()
}
function E() {
if (n == null) {
U();
n = au();
n.init(V);
for (ag = 0; ag < V.length; ++ag) {
V[ag] = 0
}
ag = 0
}
return n.next()
}
function aB(z) {
var t;
for (t = 0; t < z.length; ++t) {
z[t] = E()
}
}
function ah() {}
ah.prototype.nextBytes = aB;
var aC;
var an = 244837814094590;
var ac = ((an & 16777215) == 15715070);
function ay(z, t, aG) {
if (z != null) {
if ("number" == typeof z) {
this.fromNumber(z, t, aG)
} else {
if (t == null && "string" != typeof z) {
this.fromString(z, 256)
} else {
this.fromString(z, t)
}
}
}
}
function i() {
return new ay(null)
}
function c(aI, t, z, aH, aK, aJ) {
while (--aJ >= 0) {
var aG = t * this[aI++] + z[aH] + aK;
aK = Math.floor(aG / 67108864);
z[aH++] = aG & 67108863
}
return aK
}
function aE(aI, aN, aO, aH, aL, t) {
var aK = aN & 32767
, aM = aN >> 15;
while (--t >= 0) {
var aG = this[aI] & 32767;
var aJ = this[aI++] >> 15;
var z = aM * aG + aJ * aK;
aG = aK * aG + ((z & 32767) << 15) + aO[aH] + (aL & 1073741823);
aL = (aG >>> 30) + (z >>> 15) + aM * aJ + (aL >>> 30);
aO[aH++] = aG & 1073741823
}
return aL
}