发送的请求带Antireplay-Token,每次都不一样,看了下是调用的js里的方法生成的,我用python如何获取这个token并发送请求获取系统数据?求指导
可以Python直接重现JavaScript的生成逻辑吗?还是只能通过浏览器模拟的方式?长度受限,部分 javascript代码:
ui.js
getReplayToken = function() {
time = (Date.now() - window.backTimeOffset).toString();
random = time.slice(-9) + Math.random().toString().slice(2, 8);
str = random + "|" + time;
return window.sm4.encrypt(str, sm4Key)
sm4.js
var encrypt = function encrypt(data, key, options) {
var _convertOptions = convertOptions(options, 'encrypt'),
mode = _convertOptions.mode,
iv = _convertOptions.iv,
inputEncoding = _convertOptions.inputEncoding,
outputEncoding = _convertOptions.outputEncoding,
padding = _convertOptions.padding;
if (!key) {
key = '20141131201411312014113120141131';
}
if (typeof data === 'string') {
data = buffer__WEBPACK_IMPORTED_MODULE_1__.Buffer.from(data, inputEncoding || 'utf8');
} else if (data instanceof ArrayBuffer) {
data = buffer__WEBPACK_IMPORTED_MODULE_1__.Buffer.from(data);
} else if (Array.isArray(data) && inputEncoding === 'array') {
var hexStr = '';
var _iterator = _createForOfIteratorHelper(data),
_step;
try {
for (_iterator.s(); !(_step = _iterator.n()).done;) {
var item = _step.value;
var str = item.toString(16);
if (str.length === 1) {
str = '0' + str;
}
hexStr += str;
}
} catch (err) {
_iterator.e(err);
} finally {
_iterator.f();
}
inputEncoding = 'hex';
data = buffer__WEBPACK_IMPORTED_MODULE_1__.Buffer.from(hexStr, inputEncoding);
}
if (!buffer__WEBPACK_IMPORTED_MODULE_1__.Buffer.isBuffer(data)) {
throw new TypeError("Expected \"string\" | \"Buffer\" | \"ArrayBuffer\" but received \"".concat(Object.prototype.toString.call(data), "\""));
}
if (!REG_EXP_KEY.test(key)) {
throw new TypeError('Invalid value of cipher `key`');
}
key = buffer__WEBPACK_IMPORTED_MODULE_1__.Buffer.from(key, 'hex'); // CBC 鍒嗙粍蹇呴』鍒跺畾 iv
if (mode === CBC && !iv) {
iv = '00000000000000000000000000000000';
}
if (mode === CBC && !REG_EXP_KEY.test(iv)) {
throw new TypeError('Invalid value of `iv` option');
}
iv = mode === CBC ? buffer__WEBPACK_IMPORTED_MODULE_1__.Buffer.from(iv, 'hex') : null;
return _encrypt(daa, key, iv, outputEncoding, padding);
};