mirror of
https://github.com/Jerryplusy/rc-plugin.git
synced 2025-10-14 08:09:19 +00:00
🎈 pref: 更换x-bogus算法为a-bogus算法,以提升dy解析性能
This commit is contained in:
parent
cd69d28c64
commit
e5e0785c1e
@ -43,7 +43,7 @@ import {
|
|||||||
} from "../utils/common.js";
|
} from "../utils/common.js";
|
||||||
import config from "../model/index.js";
|
import config from "../model/index.js";
|
||||||
import Translate from "../utils/trans-strategy.js";
|
import Translate from "../utils/trans-strategy.js";
|
||||||
import * as xBogus from "../utils/x-bogus.cjs";
|
import * as aBogus from "../utils/a-bogus.cjs";
|
||||||
import { getBodianAudio, getBodianMusicInfo, getBodianMv } from "../utils/bodian.js";
|
import { getBodianAudio, getBodianMusicInfo, getBodianMv } from "../utils/bodian.js";
|
||||||
import { av2BV } from "../utils/bilibili-bv-av-convert.js";
|
import { av2BV } from "../utils/bilibili-bv-av-convert.js";
|
||||||
import querystring from "querystring";
|
import querystring from "querystring";
|
||||||
@ -255,12 +255,12 @@ export class tools extends plugin {
|
|||||||
};
|
};
|
||||||
const dyApi = DY_INFO.replace("{}", douId);
|
const dyApi = DY_INFO.replace("{}", douId);
|
||||||
// xg参数
|
// xg参数
|
||||||
const xbParam = xBogus.sign(
|
const xbParam = aBogus.generate_a_bogus(
|
||||||
new URLSearchParams(new URL(dyApi).search).toString(),
|
new URLSearchParams(new URL(dyApi).search).toString(),
|
||||||
headers["User-Agent"],
|
headers["User-Agent"],
|
||||||
);
|
);
|
||||||
// const param = resp.data.result[0].paramsencode;
|
// const param = resp.data.result[0].paramsencode;
|
||||||
const resDyApi = `${ dyApi }&X-Bogus=${ xbParam }`;
|
const resDyApi = `${ dyApi }&a_bogus=${ xbParam }`;
|
||||||
headers['Referer'] = `https://www.douyin.com/video/${ douId }`
|
headers['Referer'] = `https://www.douyin.com/video/${ douId }`
|
||||||
const dyResponse = () => axios.get(resDyApi, {
|
const dyResponse = () => axios.get(resDyApi, {
|
||||||
headers,
|
headers,
|
||||||
|
495
utils/a-bogus.cjs
Normal file
495
utils/a-bogus.cjs
Normal file
@ -0,0 +1,495 @@
|
|||||||
|
// All the content in this article is only for learning and communication use, not for any other purpose, strictly prohibited for commercial use and illegal use, otherwise all the consequences are irrelevant to the author!
|
||||||
|
function rc4_encrypt(plaintext, key) {
|
||||||
|
var s = []
|
||||||
|
for (var i = 0; i < 256; i++) {
|
||||||
|
s[i] = i
|
||||||
|
}
|
||||||
|
var j = 0
|
||||||
|
for (var i = 0; i < 256; i++) {
|
||||||
|
j = (j + s[i] + key.charCodeAt(i % key.length)) % 256
|
||||||
|
var temp = s[i]
|
||||||
|
s[i] = s[j]
|
||||||
|
s[j] = temp
|
||||||
|
}
|
||||||
|
|
||||||
|
var i = 0
|
||||||
|
var j = 0
|
||||||
|
var cipher = []
|
||||||
|
for (var k = 0; k < plaintext.length; k++) {
|
||||||
|
i = (i + 1) % 256
|
||||||
|
j = (j + s[i]) % 256
|
||||||
|
var temp = s[i]
|
||||||
|
s[i] = s[j]
|
||||||
|
s[j] = temp
|
||||||
|
var t = (s[i] + s[j]) % 256
|
||||||
|
cipher.push(String.fromCharCode(s[t] ^ plaintext.charCodeAt(k)))
|
||||||
|
}
|
||||||
|
return cipher.join('')
|
||||||
|
}
|
||||||
|
|
||||||
|
function le(e, r) {
|
||||||
|
return ((e << (r %= 32)) | (e >>> (32 - r))) >>> 0
|
||||||
|
}
|
||||||
|
|
||||||
|
function de(e) {
|
||||||
|
return 0 <= e && e < 16 ? 2043430169 : 16 <= e && e < 64 ? 2055708042 : void console['error']('invalid j for constant Tj')
|
||||||
|
}
|
||||||
|
|
||||||
|
function pe(e, r, t, n) {
|
||||||
|
return 0 <= e && e < 16
|
||||||
|
? (r ^ t ^ n) >>> 0
|
||||||
|
: 16 <= e && e < 64
|
||||||
|
? ((r & t) | (r & n) | (t & n)) >>> 0
|
||||||
|
: (console['error']('invalid j for bool function FF'), 0)
|
||||||
|
}
|
||||||
|
|
||||||
|
function he(e, r, t, n) {
|
||||||
|
return 0 <= e && e < 16 ? (r ^ t ^ n) >>> 0 : 16 <= e && e < 64 ? ((r & t) | (~r & n)) >>> 0 : (console['error']('invalid j for bool function GG'), 0)
|
||||||
|
}
|
||||||
|
|
||||||
|
function reset() {
|
||||||
|
;(this.reg[0] = 1937774191),
|
||||||
|
(this.reg[1] = 1226093241),
|
||||||
|
(this.reg[2] = 388252375),
|
||||||
|
(this.reg[3] = 3666478592),
|
||||||
|
(this.reg[4] = 2842636476),
|
||||||
|
(this.reg[5] = 372324522),
|
||||||
|
(this.reg[6] = 3817729613),
|
||||||
|
(this.reg[7] = 2969243214),
|
||||||
|
(this['chunk'] = []),
|
||||||
|
(this['size'] = 0)
|
||||||
|
}
|
||||||
|
|
||||||
|
function write(e) {
|
||||||
|
let n
|
||||||
|
var a =
|
||||||
|
'string' == typeof e
|
||||||
|
? (function (e) {
|
||||||
|
;(n = encodeURIComponent(e)['replace'](/%([0-9A-F]{2})/g, function (e, r) {
|
||||||
|
return String['fromCharCode']('0x' + r)
|
||||||
|
})),
|
||||||
|
(a = new Array(n['length']))
|
||||||
|
return (
|
||||||
|
Array['prototype']['forEach']['call'](n, function (e, r) {
|
||||||
|
a[r] = e.charCodeAt(0)
|
||||||
|
}),
|
||||||
|
a
|
||||||
|
)
|
||||||
|
})(e)
|
||||||
|
: e
|
||||||
|
this.size += a.length
|
||||||
|
var f = 64 - this['chunk']['length']
|
||||||
|
if (a['length'] < f) this['chunk'] = this['chunk'].concat(a)
|
||||||
|
else
|
||||||
|
for (this['chunk'] = this['chunk'].concat(a.slice(0, f)); this['chunk'].length >= 64; )
|
||||||
|
this['_compress'](this['chunk']), f < a['length'] ? (this['chunk'] = a['slice'](f, Math['min'](f + 64, a['length']))) : (this['chunk'] = []), (f += 64)
|
||||||
|
}
|
||||||
|
|
||||||
|
function sum(e, t) {
|
||||||
|
e && (this['reset'](), this['write'](e)), this['_fill']()
|
||||||
|
for (var f = 0; f < this.chunk['length']; f += 64) this._compress(this['chunk']['slice'](f, f + 64))
|
||||||
|
var i = null
|
||||||
|
if (t == 'hex') {
|
||||||
|
i = ''
|
||||||
|
for (f = 0; f < 8; f++) i += se(this['reg'][f]['toString'](16), 8, '0')
|
||||||
|
} else
|
||||||
|
for (i = new Array(32), f = 0; f < 8; f++) {
|
||||||
|
var c = this.reg[f]
|
||||||
|
;(i[4 * f + 3] = (255 & c) >>> 0),
|
||||||
|
(c >>>= 8),
|
||||||
|
(i[4 * f + 2] = (255 & c) >>> 0),
|
||||||
|
(c >>>= 8),
|
||||||
|
(i[4 * f + 1] = (255 & c) >>> 0),
|
||||||
|
(c >>>= 8),
|
||||||
|
(i[4 * f] = (255 & c) >>> 0)
|
||||||
|
}
|
||||||
|
return this['reset'](), i
|
||||||
|
}
|
||||||
|
|
||||||
|
function _compress(t) {
|
||||||
|
if (t < 64) console.error('compress error: not enough data')
|
||||||
|
else {
|
||||||
|
for (
|
||||||
|
var f = (function (e) {
|
||||||
|
for (var r = new Array(132), t = 0; t < 16; t++)
|
||||||
|
(r[t] = e[4 * t] << 24), (r[t] |= e[4 * t + 1] << 16), (r[t] |= e[4 * t + 2] << 8), (r[t] |= e[4 * t + 3]), (r[t] >>>= 0)
|
||||||
|
for (var n = 16; n < 68; n++) {
|
||||||
|
var a = r[n - 16] ^ r[n - 9] ^ le(r[n - 3], 15)
|
||||||
|
;(a = a ^ le(a, 15) ^ le(a, 23)), (r[n] = (a ^ le(r[n - 13], 7) ^ r[n - 6]) >>> 0)
|
||||||
|
}
|
||||||
|
for (n = 0; n < 64; n++) r[n + 68] = (r[n] ^ r[n + 4]) >>> 0
|
||||||
|
return r
|
||||||
|
})(t),
|
||||||
|
i = this['reg'].slice(0),
|
||||||
|
c = 0;
|
||||||
|
c < 64;
|
||||||
|
c++
|
||||||
|
) {
|
||||||
|
var o = le(i[0], 12) + i[4] + le(de(c), c),
|
||||||
|
s = ((o = le((o = (4294967295 & o) >>> 0), 7)) ^ le(i[0], 12)) >>> 0,
|
||||||
|
u = pe(c, i[0], i[1], i[2])
|
||||||
|
u = (4294967295 & (u = u + i[3] + s + f[c + 68])) >>> 0
|
||||||
|
var b = he(c, i[4], i[5], i[6])
|
||||||
|
;(b = (4294967295 & (b = b + i[7] + o + f[c])) >>> 0),
|
||||||
|
(i[3] = i[2]),
|
||||||
|
(i[2] = le(i[1], 9)),
|
||||||
|
(i[1] = i[0]),
|
||||||
|
(i[0] = u),
|
||||||
|
(i[7] = i[6]),
|
||||||
|
(i[6] = le(i[5], 19)),
|
||||||
|
(i[5] = i[4]),
|
||||||
|
(i[4] = (b ^ le(b, 9) ^ le(b, 17)) >>> 0)
|
||||||
|
}
|
||||||
|
for (var l = 0; l < 8; l++) this['reg'][l] = (this['reg'][l] ^ i[l]) >>> 0
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function _fill() {
|
||||||
|
var a = 8 * this['size'],
|
||||||
|
f = this['chunk']['push'](128) % 64
|
||||||
|
for (64 - f < 8 && (f -= 64); f < 56; f++) this.chunk['push'](0)
|
||||||
|
for (var i = 0; i < 4; i++) {
|
||||||
|
var c = Math['floor'](a / 4294967296)
|
||||||
|
this['chunk'].push((c >>> (8 * (3 - i))) & 255)
|
||||||
|
}
|
||||||
|
for (i = 0; i < 4; i++) this['chunk']['push']((a >>> (8 * (3 - i))) & 255)
|
||||||
|
}
|
||||||
|
|
||||||
|
function SM3() {
|
||||||
|
this.reg = []
|
||||||
|
this.chunk = []
|
||||||
|
this.size = 0
|
||||||
|
this.reset()
|
||||||
|
}
|
||||||
|
SM3.prototype.reset = reset
|
||||||
|
SM3.prototype.write = write
|
||||||
|
SM3.prototype.sum = sum
|
||||||
|
SM3.prototype._compress = _compress
|
||||||
|
SM3.prototype._fill = _fill
|
||||||
|
|
||||||
|
function result_encrypt(long_str, num = null) {
|
||||||
|
let s_obj = {
|
||||||
|
s0: 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=',
|
||||||
|
s1: 'Dkdpgh4ZKsQB80/Mfvw36XI1R25+WUAlEi7NLboqYTOPuzmFjJnryx9HVGcaStCe=',
|
||||||
|
s2: 'Dkdpgh4ZKsQB80/Mfvw36XI1R25-WUAlEi7NLboqYTOPuzmFjJnryx9HVGcaStCe=',
|
||||||
|
s3: 'ckdp1h4ZKsUB80/Mfvw36XIgR25+WQAlEi7NLboqYTOPuzmFjJnryx9HVGDaStCe',
|
||||||
|
s4: 'Dkdpgh2ZmsQB80/MfvV36XI1R45-WUAlEixNLwoqYTOPuzKFjJnry79HbGcaStCe',
|
||||||
|
}
|
||||||
|
let constant = {
|
||||||
|
0: 16515072,
|
||||||
|
1: 258048,
|
||||||
|
2: 4032,
|
||||||
|
str: s_obj[num],
|
||||||
|
}
|
||||||
|
|
||||||
|
let result = ''
|
||||||
|
let lound = 0
|
||||||
|
let long_int = get_long_int(lound, long_str)
|
||||||
|
for (let i = 0; i < (long_str.length / 3) * 4; i++) {
|
||||||
|
if (Math.floor(i / 4) !== lound) {
|
||||||
|
lound += 1
|
||||||
|
long_int = get_long_int(lound, long_str)
|
||||||
|
}
|
||||||
|
let key = i % 4
|
||||||
|
switch (key) {
|
||||||
|
case 0:
|
||||||
|
temp_int = (long_int & constant['0']) >> 18
|
||||||
|
result += constant['str'].charAt(temp_int)
|
||||||
|
break
|
||||||
|
case 1:
|
||||||
|
temp_int = (long_int & constant['1']) >> 12
|
||||||
|
result += constant['str'].charAt(temp_int)
|
||||||
|
break
|
||||||
|
case 2:
|
||||||
|
temp_int = (long_int & constant['2']) >> 6
|
||||||
|
result += constant['str'].charAt(temp_int)
|
||||||
|
break
|
||||||
|
case 3:
|
||||||
|
temp_int = long_int & 63
|
||||||
|
result += constant['str'].charAt(temp_int)
|
||||||
|
break
|
||||||
|
default:
|
||||||
|
break
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return result
|
||||||
|
}
|
||||||
|
|
||||||
|
function get_long_int(round, long_str) {
|
||||||
|
round = round * 3
|
||||||
|
return (long_str.charCodeAt(round) << 16) | (long_str.charCodeAt(round + 1) << 8) | long_str.charCodeAt(round + 2)
|
||||||
|
}
|
||||||
|
|
||||||
|
function gener_random(random, option) {
|
||||||
|
return [
|
||||||
|
(random & 255 & 170) | (option[0] & 85), // 163
|
||||||
|
(random & 255 & 85) | (option[0] & 170), //87
|
||||||
|
((random >> 8) & 255 & 170) | (option[1] & 85), //37
|
||||||
|
((random >> 8) & 255 & 85) | (option[1] & 170), //41
|
||||||
|
]
|
||||||
|
}
|
||||||
|
|
||||||
|
//////////////////////////////////////////////
|
||||||
|
function generate_rc4_bb_str(url_search_params, user_agent, window_env_str, suffix = 'cus', Arguments = [0, 1, 14]) {
|
||||||
|
let sm3 = new SM3()
|
||||||
|
let start_time = Date.now()
|
||||||
|
/**
|
||||||
|
* 进行3次加密处理
|
||||||
|
* 1: url_search_params两次sm3之的结果
|
||||||
|
* 2: 对后缀两次sm3之的结果
|
||||||
|
* 3: 对ua处理之后的结果
|
||||||
|
*/
|
||||||
|
// url_search_params两次sm3之的结果
|
||||||
|
let url_search_params_list = sm3.sum(sm3.sum(url_search_params + suffix))
|
||||||
|
// 对后缀两次sm3之的结果
|
||||||
|
let cus = sm3.sum(sm3.sum(suffix))
|
||||||
|
// 对ua处理之后的结果
|
||||||
|
let ua = sm3.sum(result_encrypt(rc4_encrypt(user_agent, String.fromCharCode.apply(null, [0.00390625, 1, 14])), 's3'))
|
||||||
|
//
|
||||||
|
let end_time = Date.now()
|
||||||
|
// b
|
||||||
|
let b = {
|
||||||
|
8: 3, // 固定
|
||||||
|
10: end_time, //3次加密结束时间
|
||||||
|
15: {
|
||||||
|
aid: 6383,
|
||||||
|
pageId: 6241,
|
||||||
|
boe: false,
|
||||||
|
ddrt: 7,
|
||||||
|
paths: {
|
||||||
|
include: [{}, {}, {}, {}, {}, {}, {}],
|
||||||
|
exclude: [],
|
||||||
|
},
|
||||||
|
track: {
|
||||||
|
mode: 0,
|
||||||
|
delay: 300,
|
||||||
|
paths: [],
|
||||||
|
},
|
||||||
|
dump: true,
|
||||||
|
rpU: '',
|
||||||
|
},
|
||||||
|
16: start_time, //3次加密开始时间
|
||||||
|
18: 44, //固定
|
||||||
|
19: [1, 0, 1, 5],
|
||||||
|
}
|
||||||
|
|
||||||
|
//3次加密开始时间
|
||||||
|
b[20] = (b[16] >> 24) & 255
|
||||||
|
b[21] = (b[16] >> 16) & 255
|
||||||
|
b[22] = (b[16] >> 8) & 255
|
||||||
|
b[23] = b[16] & 255
|
||||||
|
b[24] = (b[16] / 256 / 256 / 256 / 256) >> 0
|
||||||
|
b[25] = (b[16] / 256 / 256 / 256 / 256 / 256) >> 0
|
||||||
|
|
||||||
|
// 参数Arguments [0, 1, 14, ...]
|
||||||
|
// let Arguments = [0, 1, 14]
|
||||||
|
b[26] = (Arguments[0] >> 24) & 255
|
||||||
|
b[27] = (Arguments[0] >> 16) & 255
|
||||||
|
b[28] = (Arguments[0] >> 8) & 255
|
||||||
|
b[29] = Arguments[0] & 255
|
||||||
|
|
||||||
|
b[30] = (Arguments[1] / 256) & 255
|
||||||
|
b[31] = Arguments[1] % 256 & 255
|
||||||
|
b[32] = (Arguments[1] >> 24) & 255
|
||||||
|
b[33] = (Arguments[1] >> 16) & 255
|
||||||
|
|
||||||
|
b[34] = (Arguments[2] >> 24) & 255
|
||||||
|
b[35] = (Arguments[2] >> 16) & 255
|
||||||
|
b[36] = (Arguments[2] >> 8) & 255
|
||||||
|
b[37] = Arguments[2] & 255
|
||||||
|
|
||||||
|
// (url_search_params + "cus") 两次sm3之的结果
|
||||||
|
/**let url_search_params_list = [
|
||||||
|
91, 186, 35, 86, 143, 253, 6, 76,
|
||||||
|
34, 21, 167, 148, 7, 42, 192, 219,
|
||||||
|
188, 20, 182, 85, 213, 74, 213, 147,
|
||||||
|
37, 155, 93, 139, 85, 118, 228, 213
|
||||||
|
]*/
|
||||||
|
b[38] = url_search_params_list[21]
|
||||||
|
b[39] = url_search_params_list[22]
|
||||||
|
|
||||||
|
// ("cus") 对后缀两次sm3之的结果
|
||||||
|
/**
|
||||||
|
* let cus = [
|
||||||
|
136, 101, 114, 147, 58, 77, 207, 201,
|
||||||
|
215, 162, 154, 93, 248, 13, 142, 160,
|
||||||
|
105, 73, 215, 241, 83, 58, 51, 43,
|
||||||
|
255, 38, 168, 141, 216, 194, 35, 236
|
||||||
|
]*/
|
||||||
|
b[40] = cus[21]
|
||||||
|
b[41] = cus[22]
|
||||||
|
|
||||||
|
// 对ua处理之后的结果
|
||||||
|
/**
|
||||||
|
* let ua = [
|
||||||
|
129, 190, 70, 186, 86, 196, 199, 53,
|
||||||
|
99, 38, 29, 209, 243, 17, 157, 69,
|
||||||
|
147, 104, 53, 23, 114, 126, 66, 228,
|
||||||
|
135, 30, 168, 185, 109, 156, 251, 88
|
||||||
|
]*/
|
||||||
|
b[42] = ua[23]
|
||||||
|
b[43] = ua[24]
|
||||||
|
|
||||||
|
//3次加密结束时间
|
||||||
|
b[44] = (b[10] >> 24) & 255
|
||||||
|
b[45] = (b[10] >> 16) & 255
|
||||||
|
b[46] = (b[10] >> 8) & 255
|
||||||
|
b[47] = b[10] & 255
|
||||||
|
b[48] = b[8]
|
||||||
|
b[49] = (b[10] / 256 / 256 / 256 / 256) >> 0
|
||||||
|
b[50] = (b[10] / 256 / 256 / 256 / 256 / 256) >> 0
|
||||||
|
|
||||||
|
// object配置项
|
||||||
|
b[51] = b[15]['pageId']
|
||||||
|
b[52] = (b[15]['pageId'] >> 24) & 255
|
||||||
|
b[53] = (b[15]['pageId'] >> 16) & 255
|
||||||
|
b[54] = (b[15]['pageId'] >> 8) & 255
|
||||||
|
b[55] = b[15]['pageId'] & 255
|
||||||
|
|
||||||
|
b[56] = b[15]['aid']
|
||||||
|
b[57] = b[15]['aid'] & 255
|
||||||
|
b[58] = (b[15]['aid'] >> 8) & 255
|
||||||
|
b[59] = (b[15]['aid'] >> 16) & 255
|
||||||
|
b[60] = (b[15]['aid'] >> 24) & 255
|
||||||
|
|
||||||
|
// 中间进行了环境检测
|
||||||
|
// 代码索引: 2496 索引值: 17 (索引64关键条件)
|
||||||
|
// '1536|747|1536|834|0|30|0|0|1536|834|1536|864|1525|747|24|24|Win32'.charCodeAt()得到65位数组
|
||||||
|
/**
|
||||||
|
* let window_env_list = [49, 53, 51, 54, 124, 55, 52, 55, 124, 49, 53, 51, 54, 124, 56, 51, 52, 124, 48, 124, 51,
|
||||||
|
* 48, 124, 48, 124, 48, 124, 49, 53, 51, 54, 124, 56, 51, 52, 124, 49, 53, 51, 54, 124, 56,
|
||||||
|
* 54, 52, 124, 49, 53, 50, 53, 124, 55, 52, 55, 124, 50, 52, 124, 50, 52, 124, 87, 105, 110,
|
||||||
|
* 51, 50]
|
||||||
|
*/
|
||||||
|
let window_env_list = []
|
||||||
|
for (let index = 0; index < window_env_str.length; index++) {
|
||||||
|
window_env_list.push(window_env_str.charCodeAt(index))
|
||||||
|
}
|
||||||
|
b[64] = window_env_list.length
|
||||||
|
b[65] = b[64] & 255
|
||||||
|
b[66] = (b[64] >> 8) & 255
|
||||||
|
|
||||||
|
b[69] = [].length
|
||||||
|
b[70] = b[69] & 255
|
||||||
|
b[71] = (b[69] >> 8) & 255
|
||||||
|
|
||||||
|
b[72] =
|
||||||
|
b[18] ^
|
||||||
|
b[20] ^
|
||||||
|
b[26] ^
|
||||||
|
b[30] ^
|
||||||
|
b[38] ^
|
||||||
|
b[40] ^
|
||||||
|
b[42] ^
|
||||||
|
b[21] ^
|
||||||
|
b[27] ^
|
||||||
|
b[31] ^
|
||||||
|
b[35] ^
|
||||||
|
b[39] ^
|
||||||
|
b[41] ^
|
||||||
|
b[43] ^
|
||||||
|
b[22] ^
|
||||||
|
b[28] ^
|
||||||
|
b[32] ^
|
||||||
|
b[36] ^
|
||||||
|
b[23] ^
|
||||||
|
b[29] ^
|
||||||
|
b[33] ^
|
||||||
|
b[37] ^
|
||||||
|
b[44] ^
|
||||||
|
b[45] ^
|
||||||
|
b[46] ^
|
||||||
|
b[47] ^
|
||||||
|
b[48] ^
|
||||||
|
b[49] ^
|
||||||
|
b[50] ^
|
||||||
|
b[24] ^
|
||||||
|
b[25] ^
|
||||||
|
b[52] ^
|
||||||
|
b[53] ^
|
||||||
|
b[54] ^
|
||||||
|
b[55] ^
|
||||||
|
b[57] ^
|
||||||
|
b[58] ^
|
||||||
|
b[59] ^
|
||||||
|
b[60] ^
|
||||||
|
b[65] ^
|
||||||
|
b[66] ^
|
||||||
|
b[70] ^
|
||||||
|
b[71]
|
||||||
|
let bb = [
|
||||||
|
b[18],
|
||||||
|
b[20],
|
||||||
|
b[52],
|
||||||
|
b[26],
|
||||||
|
b[30],
|
||||||
|
b[34],
|
||||||
|
b[58],
|
||||||
|
b[38],
|
||||||
|
b[40],
|
||||||
|
b[53],
|
||||||
|
b[42],
|
||||||
|
b[21],
|
||||||
|
b[27],
|
||||||
|
b[54],
|
||||||
|
b[55],
|
||||||
|
b[31],
|
||||||
|
b[35],
|
||||||
|
b[57],
|
||||||
|
b[39],
|
||||||
|
b[41],
|
||||||
|
b[43],
|
||||||
|
b[22],
|
||||||
|
b[28],
|
||||||
|
b[32],
|
||||||
|
b[60],
|
||||||
|
b[36],
|
||||||
|
b[23],
|
||||||
|
b[29],
|
||||||
|
b[33],
|
||||||
|
b[37],
|
||||||
|
b[44],
|
||||||
|
b[45],
|
||||||
|
b[59],
|
||||||
|
b[46],
|
||||||
|
b[47],
|
||||||
|
b[48],
|
||||||
|
b[49],
|
||||||
|
b[50],
|
||||||
|
b[24],
|
||||||
|
b[25],
|
||||||
|
b[65],
|
||||||
|
b[66],
|
||||||
|
b[70],
|
||||||
|
b[71],
|
||||||
|
]
|
||||||
|
bb = bb.concat(window_env_list).concat(b[72])
|
||||||
|
return rc4_encrypt(String.fromCharCode.apply(null, bb), String.fromCharCode.apply(null, [121]))
|
||||||
|
}
|
||||||
|
|
||||||
|
function generate_random_str() {
|
||||||
|
let random_str_list = []
|
||||||
|
random_str_list = random_str_list.concat(gener_random(Math.random() * 10000, [3, 45]))
|
||||||
|
random_str_list = random_str_list.concat(gener_random(Math.random() * 10000, [1, 0]))
|
||||||
|
random_str_list = random_str_list.concat(gener_random(Math.random() * 10000, [1, 5]))
|
||||||
|
return String.fromCharCode.apply(null, random_str_list)
|
||||||
|
}
|
||||||
|
|
||||||
|
function generate_a_bogus(url_search_params, user_agent) {
|
||||||
|
/**
|
||||||
|
* url_search_params:"device_platform=webapp&aid=6383&channel=channel_pc_web&update_version_code=170400&pc_client_type=1&version_code=170400&version_name=17.4.0&cookie_enabled=true&screen_width=1536&screen_height=864&browser_language=zh-CN&browser_platform=Win32&browser_name=Chrome&browser_version=123.0.0.0&browser_online=true&engine_name=Blink&engine_version=123.0.0.0&os_name=Windows&os_version=10&cpu_core_num=16&device_memory=8&platform=PC&downlink=10&effective_type=4g&round_trip_time=50&webid=7362810250930783783&msToken=VkDUvz1y24CppXSl80iFPr6ez-3FiizcwD7fI1OqBt6IICq9RWG7nCvxKb8IVi55mFd-wnqoNkXGnxHrikQb4PuKob5Q-YhDp5Um215JzlBszkUyiEvR"
|
||||||
|
* user_agent:"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/123.0.0.0 Safari/537.36"
|
||||||
|
*/
|
||||||
|
let result_str =
|
||||||
|
generate_random_str() + generate_rc4_bb_str(url_search_params, user_agent, '1536|747|1536|834|0|30|0|0|1536|834|1536|864|1525|747|24|24|Win32')
|
||||||
|
return result_encrypt(result_str, 's4') + '='
|
||||||
|
}
|
||||||
|
module.exports = {
|
||||||
|
generate_a_bogus,
|
||||||
|
}
|
||||||
|
|
||||||
|
//测试调用
|
||||||
|
// console.log(generate_a_bogus(
|
||||||
|
// "device_platform=webapp&aid=6383&channel=channel_pc_web&update_version_code=170400&pc_client_type=1&version_code=170400&version_name=17.4.0&cookie_enabled=true&screen_width=1536&screen_height=864&browser_language=zh-CN&browser_platform=Win32&browser_name=Chrome&browser_version=123.0.0.0&browser_online=true&engine_name=Blink&engine_version=123.0.0.0&os_name=Windows&os_version=10&cpu_core_num=16&device_memory=8&platform=PC&downlink=10&effective_type=4g&round_trip_time=50&webid=7362810250930783783&msToken=VkDUvz1y24CppXSl80iFPr6ez-3FiizcwD7fI1OqBt6IICq9RWG7nCvxKb8IVi55mFd-wnqoNkXGnxHrikQb4PuKob5Q-YhDp5Um215JzlBszkUyiEvR",
|
||||||
|
// "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/123.0.0.0 Safari/537.36"
|
||||||
|
// ));
|
Loading…
x
Reference in New Issue
Block a user