看上去參數蠻多的,請求内容倒是沒加密,主要是請求頭的這部分:
traceparent 和 tracestate 蠻簡單的,一個是直接扣就行,另一個是webpack,像之前一樣扣就行,這兩個參數搞定了。後續的參數等我更新吧。
var Tool_obj
function k(e) {
return Array.from({
length: e
}).map(( () => "0123456789abcdef".charAt(Math.floor(16 * Math.random())))).join("")
}
traceparent = `00-${k(32)}-${k(16)}-${"00"}`
console.log(traceparent)
!function(o){
c = {};
function l(e) {
var t = c[e];
if (void 0 !== t)
return t.exports;
var n = c[e] = {
id: e,
loaded: !1,
exports: {}
};
console.log("Loading " + e)
return o[e].call(n.exports, n, n.exports, l),
n.loaded = !0,
n.exports
}
l.o = function(e, t) {
return Object.prototype.hasOwnProperty.call(e, t)
}
l.d = function(e, t) {
for (var n in t)
l.o(t, n) && !l.o(e, n) && Object.defineProperty(e, n, {
enumerable: !0,
get: t[n]
})
}
Tool_obj = l
}({
43138: function(e, t, n) {
"use strict";
function a() {
let e;
try {
e = performance.now()
} catch (t) {
e = Date.now()
}
return "xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g, (t => {
let n = 16 * Math.random();
return n = (e + n) % 16 | 0,
e = Math.floor(e / 16),
("x" === t ? n : 3 & n | 8).toString(16)
}
))
}
n.d(t, {
w: function() {
return a
}
})
},
3229: function(e, t, n) {
"use strict";
n.d(t, {
C: function() {
return i
}
});
var a, r = n(43138);
class i {
static get createdAt() {
return this._refreshWhenExpired(),
this._createdAt
}
static _getStoredTenantValue() {
var e, t, n;
try {
const r = null === (e = a._storage) || void 0 === e ? void 0 : e.readSync(a._BOOTSTRAP_CONFIG_STATE_KEY);
if (r)
return (null === (n = null === (t = JSON.parse(r)) || void 0 === t ? void 0 : t.routing) || void 0 === n ? void 0 : n.tenant) || "beam"
} catch (e) {}
return "beam"
}
static getSessionDuration() {
return "br" === this._getStoredTenantValue() ? this._maxBRSessionDuration : this._maxBEAMSessionDuration
}
static extendSession() {
this._sessionExpiration = Date.now() + this.getSessionDuration(),
this._saveSessionToStorage()
}
static get sessionId() {
return this._refreshWhenExpired(),
this._sessionId
}
static isSessionExpired() {
return !this._sessionId || Date.now() >= this._sessionExpiration
}
static _isValidStorageSession(e, t, n) {
const a = Boolean(t) && "number" == typeof t
, r = Boolean(n) && "number" == typeof n && !this.isSessionExpired.apply({
_sessionId: e,
_sessionExpiration: n
});
return a && r
}
static _loadSessionFromStorage() {
var e;
let t, n, r;
try {
const i = null === (e = a._storage) || void 0 === e ? void 0 : e.readSync(a._SESSION_STATE_KEY);
if (!i)
return;
({created: n, expires: r, uuid: t} = JSON.parse(i))
} catch (e) {
return
}
this._isValidStorageSession(t, n, r) && this._updateSession(t, n)
}
static onSessionCreated(e) {
this._callbacks.add(e)
}
static _refreshWhenExpired() {
this.isSessionExpired() && this._updateSession()
}
static _saveSessionToStorage() {
const {_storage: e} = this;
e && e.writeSync(this._SESSION_STATE_KEY, JSON.stringify({
uuid: this._sessionId,
created: this._createdAt,
expires: this._sessionExpiration
}))
}
static setStorage(e) {
if (!e || !e.readSync || !e.writeSync)
throw new Error("SessionManager: IStorage must support readSync and writeSync");
a._storage = e,
this._loadSessionFromStorage()
}
static _updateSession(e, t) {
this._sessionId = null != e ? e : (0,
r.w)(),
this._createdAt = null != t ? t : Date.now(),
this.extendSession(),
this._callbacks.forEach((e => e()))
}
}
a = i,
i._callbacks = new Set,
i._createdAt = Date.now(),
i._maxBEAMSessionDuration = 18e5,
i._maxBRSessionDuration = 3e5,
i._sessionId = (0,
r.w)(),
i._sessionExpiration = a._createdAt + a.getSessionDuration(),
i._SESSION_STATE_KEY = "session",
i._BOOTSTRAP_CONFIG_STATE_KEY = "bootstrap-config"
},
})
var a = Tool_obj(3229)
function _generateTraceState(){
return `wbd=session:${a.C.sessionId}`
}
tracestate = _generateTraceState()
console.log(tracestate)