@
gefranks 好像是诶。
(1)
https://textnow.com/login 响应头,见下图
(2) 之后我搜索 csrf-token 关键字,在 js 代码中找到了两个函数
第一个 js 文件( chunk.js )
```
function t() {
var t = e.call(this) || this;
return i.a.defaults.headers.common["X-CSRF-TOKEN"] = a.get("XSRF-TOKEN"),
t
}
```
第二个 js 文件
```
function $e(a) {
var b = {}
, c =
N.Cc();
if (c) {
if (!c)
throw Error("Session cookie value cannot be empty.");
c = new yb(new zb,za(c));
a = za(a);
c.reset();
c.update(a);
a = c.digest();
var d;
c = pa(a);
v("array" == c || "object" == c && "number" == typeof a.length, "encodeByteArray takes an array as a parameter");
void 0 === d && (d = 0);
if (!wb) {
wb = {};
c = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789".split("");
for (var e = ["+/=", "+/", "-_=", "-_.", "-_"], g = 0; 5 > g; g++) {
var f = c.concat(e[g].split(""));
vb[g] = f;
for (var h = 0; h < f.length; h++) {
var k = f[h]
, l = wb[k];
void 0 === l ? wb[k] = h : v(l === h)
}
}
}
d = vb[d];
c = [];
for (e = 0; e < a.length; e += 3) {
l = a[e];
var p = (g = e + 1 < a.length) ? a[e + 1] : 0;
k = (f = e + 2 < a.length) ? a[e + 2] : 0;
h = l >> 2;
l = (l & 3) << 4 | p >> 4;
p = (p & 15) << 2 | k >> 6;
k &= 63;
f || (k = 64,
g || (p = 64));
c.push(d[h], d[l], d[p] || "", d[k] || "")
}
b["X-Csrf-Token"] = c.join("") // 看这里
}
return b
}
```