p值,也就是cookie中的P00001,每隔一定时间后会失效,通过这个接口可以得到新的p值。
curl 命令
其中cookie_string的形式是key1:value1;key2:value2
curl -e https://www.iqiyi.com -b "cookie_string" https://passport.iqiyi.com/apis/reglogin/renew_authcookie.action?ptid=01010021010000000000
正常情况下返回如下
{
"msg": null,
"code": "A00000",
"data": "p值"
}
示意如图
该接口是在登录情况下cookie某个值过期后需要刷新
网页中的接口请求的js代码函数getLoginStatusFromInterface
是
getLoginStatusFromInterface() {
var e = this;
return Object(f["a"])((function * () {
const t = "https://passport.iqiyi.com/apis/reglogin/renew_authcookie.action",
o = yield e.getRenewParams(),
r = {
params: o,
interceptor: {
needValidation: !1
},
dataType: "jsonp"
};
return yield Object(b["a"])(t, r)
}))()
}
函数getLoginStatusFromInterface
调用的js代码是
initPopupMessage() {
var t = this;
return Object(f["a"])((function * () {
if (!t.hasLogin) return void(t.showVipMessage = !1);
const o = e.cookie.get("QC163");
if (o) t.showLoginExpiredTip = !1,
t.initVipMessage();
else {
const e = yield t.getLoginStatusFromInterface(),
o = "A00001" === e.code;
t.resetLoginTimerCookie(),
o ? (t.userLogoutFun(), t.showLoginExpiredTip = !0) : (t.showLoginExpiredTip = !1, t.initVipMessage())
}
}))()
}
通过QC163
顺藤摸瓜发现这一段代码
resetLoginTimerCookie() {
e.cookie.set("QC163", "1", {
expires: 864e5,
domain: ".iqiyi.com"
})
}
其中864e5
是86400000
即1 天 = 24*60*60*1000 ms
所以p值需要一天内刷新一次