akm_5.26.js 50 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747174817491750175117521753175417551756175717581759176017611762176317641765176617671768176917701771177217731774177517761777177817791780178117821783178417851786178717881789179017911792179317941795179617971798179918001801180218031804180518061807180818091810181118121813181418151816181718181819182018211822182318241825182618271828
  1. // 环境 **********************
  2. window = global;
  3. navigator = {
  4. userAgent: 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/135.0.0.0 Safari/537.36'
  5. }
  6. /**--------------------------------------- 加密 ajr ------------------------------------**/
  7. XH = function (DV) {
  8. return gG.apply(this, [60, arguments]);
  9. }
  10. AH = function (JQ, p3) {
  11. return gG.apply(this, [43, arguments]);
  12. }
  13. GH = function () {
  14. this[93].pop();
  15. }
  16. pW = function () {
  17. this[93] = [];
  18. }
  19. Hr = function (Lz) {
  20. this[93] = [Lz[235].D];
  21. }
  22. AG = function () {
  23. this[93][this[93].length] = {};
  24. }
  25. function Gs(Ys, w3) {
  26. return Ys != w3;
  27. }
  28. function FE(jN, kJ) {
  29. return jN - kJ;
  30. }
  31. js = function () {
  32. return [...this[93]];
  33. }
  34. function Tr(AA, Z) {
  35. return AA == Z;
  36. }
  37. function rz(QE, HA) {
  38. return QE < HA;
  39. }
  40. function SF(gA, ds) {
  41. return gA | ds;
  42. }
  43. function Y3(c3, UG) {
  44. return c3 << UG;
  45. }
  46. function fG(k3, NW) {
  47. switch (k3) {
  48. case 14: {
  49. var n3 = NW[0];
  50. n3[138] = function (sN, QG) {
  51. var QN = atob(sN);
  52. var QV = 0;
  53. var WW = [];
  54. var DO = 0;
  55. for (var HQ = 0; HQ < QN.length; HQ++) {
  56. WW[DO] = QN.charCodeAt(HQ);
  57. QV = QV ^ WW[DO++];
  58. }
  59. Sr(27, [this, 210]);
  60. return WW;
  61. }
  62. ;
  63. Sr(18, [n3]);
  64. }
  65. break;
  66. case 0: {
  67. var D3 = NW[0];
  68. D3[160] = function () {
  69. return this[205][this[0][62]++];
  70. }
  71. ;
  72. fG(14, [D3]);
  73. }
  74. break;
  75. case 36: {
  76. var O7 = NW[0];
  77. O7[53] = function (UO) {
  78. return this[105](UO ? this[93][FE(this[93]["length"], 1)] : this[93].pop());
  79. }
  80. ;
  81. fG(0, [O7]);
  82. }
  83. break;
  84. case 47: {
  85. var sF = NW[0];
  86. sF[105] = function (TO) {
  87. return Tr(typeof TO, "object") ? TO.D : TO;
  88. }
  89. ;
  90. fG(36, [sF]);
  91. }
  92. break;
  93. case 24: {
  94. var mJ = NW[0];
  95. mJ[29] = function (fW) {
  96. return AH.call(this[45], fW, this);
  97. }
  98. ;
  99. fG(47, [mJ]);
  100. }
  101. break;
  102. case 6: {
  103. var Vz = NW[0];
  104. Vz[254] = function (MV, bG, xE) {
  105. if (Tr(typeof MV, "object")) {
  106. xE ? this[93].push(MV.D = bG) : MV.D = bG;
  107. } else {
  108. // T.call(this[45], MV, bG);
  109. this[45][93][FE(this[45][93].length, 1)][MV] = bG;
  110. }
  111. }
  112. ;
  113. fG(24, [Vz]);
  114. }
  115. break;
  116. case 12: {
  117. var cE = NW[0];
  118. cE[35] = function (hJ, f) {
  119. this[0][hJ] = f;
  120. }
  121. ;
  122. cE[121] = function (MN) {
  123. return this[0][MN];
  124. }
  125. ;
  126. fG(6, [cE]);
  127. }
  128. break;
  129. }
  130. }
  131. function Sr(PE, n) {
  132. switch (PE) {
  133. case 48: {
  134. var TN = n[0];
  135. TN[253] = function () {
  136. this[93].push(this[53]() !== this[53]());
  137. }
  138. ;
  139. KQ(37, [TN]);
  140. }
  141. break;
  142. case 27: {
  143. var gz = n[0];
  144. var KW = n[1];
  145. gz[106] = function (FO) {
  146. return qW(xQ(FO, KW), bF);
  147. }
  148. ;
  149. Sr(48, [gz]);
  150. }
  151. break;
  152. case 46: {
  153. var L = n[0];
  154. L[157] = function () {
  155. var dN = this[160]();
  156. while (dN !== 2) {
  157. this[dN](this);
  158. dN = this[160]();
  159. }
  160. }
  161. ;
  162. }
  163. break;
  164. case 30: {
  165. var HE = n[0];
  166. HE[158] = function (VN, L7) {
  167. return {
  168. get D() {
  169. return VN[L7];
  170. },
  171. set D(BJ) {
  172. VN[L7] = BJ;
  173. }
  174. };
  175. }
  176. ;
  177. Sr(46, [HE]);
  178. }
  179. break;
  180. case 40: {
  181. var gQ = n[0];
  182. gQ[210] = function (DN) {
  183. return {
  184. get D() {
  185. return DN;
  186. },
  187. set D(OV) {
  188. DN = OV;
  189. }
  190. };
  191. }
  192. ;
  193. Sr(30, [gQ]);
  194. }
  195. break;
  196. case 44: {
  197. var X3 = n[0];
  198. X3[55] = function (zA) {
  199. return {
  200. get D() {
  201. return zA;
  202. },
  203. set D(Vs) {
  204. zA = Vs;
  205. }
  206. };
  207. }
  208. ;
  209. Sr(40, [X3]);
  210. }
  211. break;
  212. case 25: {
  213. var RF = n[0];
  214. RF[179] = function () {
  215. var Wz = SF(Y3(this[160](), 8), this[160]());
  216. var U3 = "";
  217. for (var bV = 0; rz(bV, Wz); bV++) {
  218. U3 += String.fromCharCode(this[160]());
  219. }
  220. return U3;
  221. }
  222. ;
  223. Sr(44, [RF]);
  224. }
  225. break;
  226. case 61: {
  227. var S = n[0];
  228. S[114] = function () {
  229. var tH = SF(SF(SF(Y3(this[160](), 24), Y3(this[160](), 16)), Y3(this[160](), 8)), this[160]());
  230. return tH;
  231. }
  232. ;
  233. Sr(25, [S]);
  234. }
  235. break;
  236. case 18: {
  237. var SA = n[0];
  238. SA[175] = function () {
  239. var r7 = P3()[v(A)](kF, WQ, hH, AO);
  240. for (let PH = 0; rz(PH, nA); ++PH) {
  241. r7 += this[160]().toString(mA).padStart(nA, pE()[Mz(mA)](YH, WQ, CG, C3));
  242. }
  243. var cO = parseInt(r7.slice(VW, kW), mA);
  244. var ks = r7.slice(kW);
  245. if (Tr(cO, 0)) {
  246. if (Tr(ks.indexOf(P3()[v(mA)](OG, 0, A, Bw)), TG(VW))) {
  247. return 0;
  248. } else {
  249. cO -= Os[A];
  250. ks = xQ(pE()[Mz(mA)](YH, WQ, Nr(Nr({})), M3), ks);
  251. }
  252. } else {
  253. cO -= Os[hH];
  254. ks = xQ(P3()[v(mA)].call(null, OG, 0, lV, Nr(Nr({}))), ks);
  255. }
  256. var K3 = 0;
  257. var UW = VW;
  258. for (let bE of ks) {
  259. K3 += NV(UW, parseInt(bE));
  260. UW /= mA;
  261. }
  262. return NV(K3, Math.pow(mA, cO));
  263. }
  264. ;
  265. Sr(61, [SA]);
  266. }
  267. break;
  268. }
  269. }
  270. function gG(rE, IJ) {
  271. switch (rE) {
  272. case 49: {
  273. var xH = IJ[0];
  274. var JF = IJ[1];
  275. return this[93][FE(this[93].length, VW)][xH] = JF;
  276. }
  277. break;
  278. case 43: {
  279. var JQ = IJ[0];
  280. var p3 = IJ[1];
  281. for (var pO of [...this[93]].reverse()) {
  282. if (JQ in pO) {
  283. return p3[158](pO, JQ);
  284. }
  285. }
  286. throw DA()[pJ(hH)](Jw, V3);
  287. }
  288. break;
  289. case 60: {
  290. var DV = IJ[0];
  291. if (this[93].length === 0)
  292. this[93] = Object.assign(this[93], DV);
  293. }
  294. break;
  295. case 16: {
  296. var OE = IJ[0];
  297. var sA = IJ[1];
  298. var KV = IJ[2];
  299. this[205] = this[138](sA, KV);
  300. this[235] = this[210](OE);
  301. this[45] = new Hr(this);
  302. this[35](62, 0);
  303. while (rz(this[0][62], this[205].length)) {
  304. var Or = this[160]();
  305. this[Or](this);
  306. }
  307. }
  308. break;
  309. case 32: {
  310. var mN = IJ[0];
  311. mN[6] = function () {
  312. this[93].push(this[53]() >>> this[53]());
  313. }
  314. ;
  315. }
  316. break;
  317. case 1: {
  318. var tA = IJ[0];
  319. tA[9] = function () {
  320. this[93].push(this[160]());
  321. }
  322. ;
  323. gG(32, [tA]);
  324. }
  325. break;
  326. case 34: {
  327. var Es = IJ[0];
  328. Es[10] = function () {
  329. var hw = this[160]();
  330. var wV = this[160]();
  331. var IG = this[160]();
  332. var wO = this[53]();
  333. var NF = [];
  334. for (var TF = 0; rz(TF, IG); ++TF) {
  335. switch (this[93].pop()) {
  336. case 0:
  337. NF.push(this[53]());
  338. break;
  339. case 1:
  340. var cz = this[53]();
  341. for (var l7 of cz.reverse()) {
  342. NF.push(l7);
  343. }
  344. break;
  345. default:
  346. throw new Error(pE()[Mz(hH)](TG(AW), mA, kA, zJ));
  347. }
  348. }
  349. var IN = wO.apply(this[235].D, NF.reverse());
  350. hw && this[93].push(this[210](IN));
  351. }
  352. ;
  353. gG(1, [Es]);
  354. }
  355. break;
  356. case 10: {
  357. var tr = IJ[0];
  358. tr[13] = function () {
  359. this[93].push(this[210](undefined));
  360. }
  361. ;
  362. gG(34, [tr]);
  363. }
  364. break;
  365. case 8: {
  366. var mz = IJ[0];
  367. mz[37] = function () {
  368. this[93].push(this[53]() * this[53]());
  369. }
  370. ;
  371. gG(10, [mz]);
  372. }
  373. break;
  374. }
  375. }
  376. function KQ(VG, r) {
  377. switch (VG) {
  378. case 17: {
  379. var O3 = r[0];
  380. O3[170] = function () {
  381. this[93].push(this[53]() >> this[53]());
  382. }
  383. ;
  384. ZW(29, [O3]);
  385. }
  386. break;
  387. case 21: {
  388. var hV = r[0];
  389. hV[223] = function () {
  390. this[93].push(this[53]() in this[53]());
  391. }
  392. ;
  393. KQ(30, [hV]);
  394. }
  395. break;
  396. case 30: {
  397. var XW = r[0];
  398. XW[215] = function () {
  399. var Ew = this[160]();
  400. var PV = this[93].pop();
  401. var zQ = this[93].pop();
  402. var xz = this[93].pop();
  403. var r3 = this[0][62];
  404. this[35](62, PV);
  405. this[157]();
  406. this[35](62, xz);
  407. this[157]();
  408. this[35](62, r3);
  409. }
  410. ;
  411. KQ(1, [XW]);
  412. }
  413. break;
  414. case 1: {
  415. var CW = r[0];
  416. CW[185] = function () {
  417. // 长度为 7
  418. GH.call(this[45]);
  419. }
  420. ;
  421. KQ(41, [CW]);
  422. }
  423. break;
  424. case 47: {
  425. var W7 = r[0];
  426. W7[171] = function () {
  427. this[93].push(kN(this[53](), this[53]()));
  428. }
  429. ;
  430. KQ(17, [W7]);
  431. }
  432. break;
  433. case 57: {
  434. var pH = r[0];
  435. pH[172] = function () {
  436. this[93].push(this[53]() + this[53]());
  437. }
  438. ;
  439. KQ(47, [pH]);
  440. }
  441. break;
  442. case 39: {
  443. var nQ = r[0];
  444. nQ[240] = function () {
  445. this[93].push(this[179]());
  446. }
  447. ;
  448. KQ(9, [nQ]);
  449. }
  450. break;
  451. case 37: {
  452. var DW = r[0];
  453. DW[251] = function () {
  454. var gW = this[160]();
  455. var g = this[114]();
  456. if (this[53](gW)) {
  457. this[35](62, g);
  458. }
  459. }
  460. ;
  461. KQ(39, [DW]);
  462. }
  463. break;
  464. case 9: {
  465. var Zs = r[0];
  466. Zs[236] = function () {
  467. this[35](62, this[114]());
  468. }
  469. ;
  470. KQ(21, [Zs]);
  471. }
  472. break;
  473. case 41: {
  474. var sw = r[0];
  475. sw[174] = function () {
  476. var bQ = [];
  477. var bW = this[93].pop();
  478. var kw = FE(this[93].length, 1);
  479. for (var ZQ = 0; rz(ZQ, bW); ++ZQ) {
  480. bQ.push(this[105](this[93][kw--]));
  481. }
  482. this[254]("arguments", bQ);
  483. }
  484. ;
  485. KQ(57, [sw]);
  486. }
  487. break;
  488. }
  489. }
  490. function ZW(X7, Gz) {
  491. switch (X7) {
  492. case 43: {
  493. var KF = Gz[0];
  494. KF[115] = function () {
  495. this[93].push(-1 * this[53]());
  496. }
  497. ;
  498. bJ(59, [KF]);
  499. }
  500. break;
  501. case 34: {
  502. var bs = Gz[0];
  503. bs[118] = function () {
  504. this[93].push(this[53]() && this[53]());
  505. }
  506. ;
  507. ZW(43, [bs]);
  508. }
  509. break;
  510. case 39: {
  511. var FA = Gz[0];
  512. FA[125] = function () {
  513. this[93].push(this[53]() % this[53]());
  514. }
  515. ;
  516. ZW(34, [FA]);
  517. }
  518. break;
  519. case 21: {
  520. var zW = Gz[0];
  521. zW[139] = function () {
  522. this[93].push(SF(this[53](), this[53]()));
  523. }
  524. ;
  525. ZW(39, [zW]);
  526. }
  527. break;
  528. case 55: {
  529. var mW = Gz[0];
  530. mW[147] = function () {
  531. var Mw = this[160]();
  532. var vH = this[53]();
  533. var RA = this[53]();
  534. var Sw = this[158](RA, vH);
  535. if (!Mw) {
  536. var ls = this;
  537. var lr = {
  538. get(CQ) {
  539. ls[235] = CQ;
  540. return RA;
  541. }
  542. };
  543. this[235] = new Proxy(this[235], lr);
  544. }
  545. this[93].push(Sw);
  546. }
  547. ;
  548. ZW(21, [mW]);
  549. }
  550. break;
  551. case 24: {
  552. var VQ = Gz[0];
  553. VQ[151] = function () {
  554. this[93].push(this[53]() ^ this[53]());
  555. }
  556. ;
  557. ZW(55, [VQ]);
  558. }
  559. break;
  560. case 1: {
  561. var WF = Gz[0];
  562. WF[152] = function () {
  563. var IE = [];
  564. var tz = this[160]();
  565. while (tz--) {
  566. switch (this[93].pop()) {
  567. case 0:
  568. IE.push(this[53]());
  569. break;
  570. case 1:
  571. var lQ = this[53]();
  572. for (var zV of lQ) {
  573. IE.push(zV);
  574. }
  575. break;
  576. }
  577. }
  578. this[93].push(this[55](IE));
  579. }
  580. ;
  581. ZW(24, [WF]);
  582. }
  583. break;
  584. case 18: {
  585. var FH = Gz[0];
  586. FH[156] = function () {
  587. var k7 = this[160]();
  588. var gV = this[114]();
  589. if (!this[53](k7)) {
  590. this[35](62, gV);
  591. }
  592. }
  593. ;
  594. ZW(1, [FH]);
  595. }
  596. break;
  597. case 52: {
  598. var bH = Gz[0];
  599. bH[159] = function () {
  600. this[93].push(this[29](this[179]()));
  601. }
  602. ;
  603. ZW(18, [bH]);
  604. }
  605. break;
  606. case 29: {
  607. var WE = Gz[0];
  608. WE[167] = function () {
  609. this[93] = [];
  610. pW.call(this[45]);
  611. this[35](62, this[205].length);
  612. }
  613. ;
  614. ZW(52, [WE]);
  615. }
  616. break;
  617. }
  618. }
  619. function bJ(PG, rO) {
  620. switch (PG) {
  621. case 38: {
  622. var fH = rO[0];
  623. fH[39] = function () {
  624. var Er = this[93].pop();
  625. var Qw = this[160]();
  626. if (Gs(typeof Er, "object")) {
  627. throw "Invalid left-hand side expression in postfix operation";
  628. }
  629. if (Qw > 1) {
  630. Er.D++;
  631. return;
  632. }
  633. this[93].push(new Proxy(Er, {
  634. get(dH, rr, m) {
  635. if (Qw) {
  636. return ++dH.D;
  637. }
  638. return dH.D++;
  639. }
  640. }));
  641. }
  642. ;
  643. gG(8, [fH]);
  644. }
  645. break;
  646. case 39: {
  647. var hE = rO[0];
  648. hE[46] = function () {
  649. var LF = this[160]();
  650. var F = this[160]();
  651. var cW = this[114]();
  652. var tQ = js.call(this[45]);
  653. var RO = this[235];
  654. this[93].push(function (...Yw) {
  655. var J = hE[235];
  656. LF ? hE[235] = RO : hE[235] = hE[210](this);
  657. var xG = FE(Yw.length, F);
  658. hE[209] = xG + 1;
  659. while (rz(xG++, 0)) {
  660. Yw.push(undefined);
  661. }
  662. for (let Kr of Yw.reverse()) {
  663. hE[93].push(hE[210](Kr));
  664. }
  665. XH.call(hE[45], tQ);
  666. var LW = hE[0][62];
  667. hE[35](62, cW);
  668. hE[93].push(Yw.length);
  669. hE[157]();
  670. var AN = hE[53]();
  671. while (--xG > 0) {
  672. hE[93].pop();
  673. }
  674. hE[35](62, LW);
  675. hE[235] = J;
  676. return AN;
  677. });
  678. }
  679. ;
  680. bJ(38, [hE]);
  681. }
  682. break;
  683. case 5: {
  684. var mF = rO[0];
  685. mF[48] = function () {
  686. this[93].push(Y3(this[53](), this[53]()));
  687. }
  688. ;
  689. bJ(39, [mF]);
  690. }
  691. break;
  692. case 41: {
  693. var wN = rO[0];
  694. wN[49] = function () {
  695. this[93].push(this[114]());
  696. }
  697. ;
  698. bJ(5, [wN]);
  699. }
  700. break;
  701. case 56: {
  702. var vz = rO[0];
  703. vz[61] = function () {
  704. this[93].push(FE(this[53](), this[53]()));
  705. }
  706. ;
  707. bJ(41, [vz]);
  708. }
  709. break;
  710. case 17: {
  711. var vN = rO[0];
  712. vN[84] = function () {
  713. this[93].push(this[53]() === this[53]());
  714. }
  715. ;
  716. bJ(56, [vN]);
  717. }
  718. break;
  719. case 15: {
  720. var DQ = rO[0];
  721. DQ[86] = function () {
  722. this[93].push(this[53]() / this[53]());
  723. }
  724. ;
  725. bJ(17, [DQ]);
  726. }
  727. break;
  728. case 43: {
  729. var QH = rO[0];
  730. QH[87] = function () {
  731. this[93].push(rz(this[53](), this[53]()));
  732. }
  733. ;
  734. bJ(15, [QH]);
  735. }
  736. break;
  737. case 27: {
  738. var fr = rO[0];
  739. fr[91] = function () {
  740. AG.call(this[45]);
  741. }
  742. ;
  743. bJ(43, [fr]);
  744. }
  745. break;
  746. case 59: {
  747. var ME = rO[0];
  748. ME[99] = function () {
  749. this[254](this[93].pop(), this[53](), this[160]());
  750. }
  751. ;
  752. bJ(27, [ME]);
  753. }
  754. break;
  755. }
  756. }
  757. var xG = function kp(NR, rR) {
  758. switch (NR) {
  759. case 50: {
  760. return parseInt(...rR);
  761. }
  762. break;
  763. case 18: {
  764. return String(...rR);
  765. }
  766. break;
  767. }
  768. };
  769. dw = function (OE, sA, KV) {
  770. return gG.apply(this, [16, arguments]);
  771. }
  772. class cU {
  773. constructor() {
  774. this[0] = [];
  775. this[205] = [];
  776. this[93] = [];
  777. this[209] = 0;
  778. fG(12, [this]);
  779. this['t'] = dw;
  780. }
  781. }
  782. // 初始化加密函数
  783. var nRv = new cU()
  784. var arg1 = {
  785. Math: Math,
  786. String: function () {
  787. return xG.apply(this, [18, arguments]);
  788. },
  789. document: {
  790. createElement: function (res) {
  791. if (res === 'div') return {
  792. getElementsByTagName: function () {
  793. },
  794. ATTRIBUTE_NODE: 2,
  795. baseURI: "https://www.jetstar.com/hk/zh/home?adults=1&destination=MYJ&flexible=1&flight-type=1&origin=PVG&selected-departure-date=2025-05-17&tab=1"
  796. }
  797. }
  798. },
  799. parseInt: function () {
  800. return xG.apply(this, [50, arguments]);
  801. },
  802. window: window
  803. }
  804. let enStr = "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"
  805. nRv['t'](arg1, enStr, 0)
  806. function get_dvc(startTs, ajr) {
  807. window.bmak = {
  808. startTs: startTs
  809. }
  810. val = arg1.Gb(0, ajr, 0, 0) // -----!!! 这3个参数 与外面其他参数有联系, 2者保持一致 否则请求失败
  811. console.log('加密ajr生成的dvc => ', val)
  812. return val
  813. }
  814. /**-------------------------------------------------- 31条风控参数的生成---------------------------------------------------------------**/
  815. function get_ajr(din) {
  816. var lfv = function (Jw) {
  817. var rTv = function (bxv, g8v) {
  818. return bxv >>> g8v | bxv << 32 - g8v;
  819. };
  820. var kw = [0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5, 0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5, 0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3, 0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174, 0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc, 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da, 0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7, 0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967, 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13, 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85, 0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3, 0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070, 0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5, 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3, 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208, 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2];
  821. var Jl = 0x6a09e667;
  822. var BXv = 0xbb67ae85;
  823. var SVv = 0x3c6ef372;
  824. var FCv = 0xa54ff53a;
  825. var VTv = 0x510e527f;
  826. var tEv = 0x9b05688c;
  827. var ttv = 0x1f83d9ab;
  828. var hVv = 0x5be0cd19;
  829. var SUv = unescape(encodeURIComponent(Jw));
  830. var hXv = SUv["length"] * 8;
  831. SUv += String["fromCharCode"](0x80);
  832. var Sfv = SUv["length"] / 4 + 2;
  833. var pw = Math["ceil"](Sfv / 16);
  834. var nfv = new (Array)(pw);
  835. for (var Ol = 0; Ol < pw; Ol++) {
  836. nfv[Ol] = new (Array)(16);
  837. for (var fLv = 0; fLv < 16; fLv++) {
  838. nfv[Ol][fLv] = SUv["charCodeAt"](Ol * 64 + fLv * 4) << 24 | SUv["charCodeAt"](Ol * 64 + fLv * 4 + 1) << 16 | SUv["charCodeAt"](Ol * 64 + fLv * 4 + 2) << 8 | SUv["charCodeAt"](Ol * 64 + fLv * 4 + 3) << 0;
  839. }
  840. }
  841. var VCv = hXv / Math["pow"](2, 32);
  842. nfv[pw - 1][14] = Math["floor"](VCv);
  843. nfv[pw - 1][15] = hXv;
  844. for (var Fbv = 0; Fbv < pw; Fbv++) {
  845. var GTv = new (Array)(64);
  846. var khv = Jl;
  847. var jXv = BXv;
  848. var Ydv = SVv;
  849. var jtv = FCv;
  850. var cl = VTv;
  851. var Ehv = tEv;
  852. var Vfv = ttv;
  853. var ddv = hVv;
  854. for (var Jvv = 0; Jvv < 64; Jvv++) {
  855. var qCv = void 0
  856. , lvv = void 0
  857. , Kq = void 0
  858. , vtv = void 0
  859. , Dnv = void 0
  860. , NCv = void 0;
  861. if (Jvv < 16)
  862. GTv[Jvv] = nfv[Fbv][Jvv];
  863. else {
  864. qCv = rTv(GTv[Jvv - 15], 7) ^ rTv(GTv[Jvv - 15], 18) ^ GTv[Jvv - 15] >>> 3;
  865. lvv = rTv(GTv[Jvv - 2], 17) ^ rTv(GTv[Jvv - 2], 19) ^ GTv[Jvv - 2] >>> 10;
  866. GTv[Jvv] = GTv[Jvv - 16] + qCv + GTv[Jvv - 7] + lvv;
  867. }
  868. lvv = rTv(cl, 6) ^ rTv(cl, 11) ^ rTv(cl, 25);
  869. Kq = cl & Ehv ^ ~cl & Vfv;
  870. vtv = ddv + lvv + Kq + kw[Jvv] + GTv[Jvv];
  871. qCv = rTv(khv, 2) ^ rTv(khv, 13) ^ rTv(khv, 22);
  872. Dnv = khv & jXv ^ khv & Ydv ^ jXv & Ydv;
  873. NCv = qCv + Dnv;
  874. ddv = Vfv;
  875. Vfv = Ehv;
  876. Ehv = cl;
  877. cl = jtv + vtv >>> 0;
  878. jtv = Ydv;
  879. Ydv = jXv;
  880. jXv = khv;
  881. khv = vtv + NCv >>> 0;
  882. }
  883. Jl = Jl + khv;
  884. BXv = BXv + jXv;
  885. SVv = SVv + Ydv;
  886. FCv = FCv + jtv;
  887. VTv = VTv + cl;
  888. tEv = tEv + Ehv;
  889. ttv = ttv + Vfv;
  890. hVv = hVv + ddv;
  891. }
  892. return [Jl >> 24 & 0xff, Jl >> 16 & 0xff, Jl >> 8 & 0xff, Jl & 0xff, BXv >> 24 & 0xff, BXv >> 16 & 0xff, BXv >> 8 & 0xff, BXv & 0xff, SVv >> 24 & 0xff, SVv >> 16 & 0xff, SVv >> 8 & 0xff, SVv & 0xff, FCv >> 24 & 0xff, FCv >> 16 & 0xff, FCv >> 8 & 0xff, FCv & 0xff, VTv >> 24 & 0xff, VTv >> 16 & 0xff, VTv >> 8 & 0xff, VTv & 0xff, tEv >> 24 & 0xff, tEv >> 16 & 0xff, tEv >> 8 & 0xff, tEv & 0xff, ttv >> 24 & 0xff, ttv >> 16 & 0xff, ttv >> 8 & 0xff, ttv & 0xff, hVv >> 24 & 0xff, hVv >> 16 & 0xff, hVv >> 8 & 0xff, hVv & 0xff];
  893. };
  894. var gTv = function (RNv) {
  895. return Math["floor"](Math["random"]() * RNv["length"]);
  896. };
  897. var Fw = function (kzv) {
  898. var W3v = '';
  899. for (var F6v = 0; F6v < kzv["length"]; F6v++) {
  900. W3v += kzv[F6v]["toString"](16)["length"] === 2 ? kzv[F6v]["toString"](16) : "0"["concat"](kzv[F6v]["toString"](16));
  901. }
  902. return W3v;
  903. };
  904. var jx = function (Hp4) {
  905. var Ml4 = 0;
  906. for (var Kl4 = 0; Kl4 < Hp4["length"]; Kl4++) {
  907. Ml4 = Ml4 + Hp4["charCodeAt"](Kl4);
  908. }
  909. return Ml4;
  910. };
  911. var Gx = function (nD4) {
  912. var pE4 = 1;
  913. var hV4 = [];
  914. var lV4 = Math["sqrt"](nD4);
  915. while (pE4 <= lV4 && hV4["length"] < 6) {
  916. if (nD4 % pE4 === 0) {
  917. if (nD4 / pE4 === pE4) {
  918. hV4["push"](pE4);
  919. } else {
  920. hV4["push"](pE4, nD4 / pE4);
  921. }
  922. }
  923. pE4 = pE4 + 1;
  924. }
  925. return hV4;
  926. };
  927. let deviceData = din.map(obj => {
  928. return String(Object.values(obj)[0]);
  929. }).join(',');
  930. // console.log(fDv)
  931. return Fw(lfv(btoa(deviceData)))
  932. //
  933. // var tfv = [];
  934. // var dnv = "";
  935. // for (var XVv = 0; XVv < 5; XVv++) {
  936. // var Pgv = gTv(fDv);
  937. // tfv["push"](Pgv);
  938. // dnv = dnv + fDv[Pgv];
  939. // }
  940. // var jz = jx(dnv);
  941. // var tz = Gx(jz);
  942. //
  943. // var zCv = [tz, tfv];
  944. // return zCv["join"]("|")
  945. }
  946. function mst(startTs, ajr) {
  947. function dDd(YS) {
  948. var P3 = function (ZA) {
  949. var SW = ZA[0] - ZA[1];
  950. var ng = ZA[2] - ZA[3];
  951. var sb = ZA[4] - ZA[5];
  952. var CJ = Math["sqrt"](SW * SW + ng * ng + sb * sb);
  953. return Math["floor"](CJ);
  954. };
  955. var H7d = Math["floor"](Math["random"]() * 100000 + 10000);
  956. var vZ = String(YS * H7d);
  957. var sQd = 0;
  958. var P4d = [];
  959. var Ffd = vZ["length"] >= 18;
  960. while (P4d["length"] < 6) {
  961. P4d["push"](parseInt(vZ["slice"](sQd, sQd + 2), 10));
  962. sQd = Ffd ? sQd + 3 : sQd + 2;
  963. }
  964. var FMd = P3(P4d);
  965. return [H7d, FMd];
  966. };
  967. var dbd = dDd(startTs);
  968. let dvc = get_dvc(startTs, ajr) // 生成 dvc 的2个入参与下面保持一致
  969. return [
  970. {
  971. 'kevl': 1
  972. },
  973. {'mevl': 32},
  974. {'tevl': 32},
  975. {'devl': 0},
  976. {'dmvl': 0},
  977. {'pevl': 0},
  978. {'tovl': 0},
  979. {'delt': 0}, // ----111
  980. {'it': 0},
  981. {'sts': startTs},
  982. {'fct': -999999}, // HAd['td']
  983. {'dd2': parseInt(parseInt(startTs / 4064256, 10) / 23, 10)},
  984. {'kc': 0},
  985. {'mc': 0},
  986. {'ww8': 0},
  987. {'pc': 0},
  988. {'tc': 0},
  989. {'ssts': 7}, // ------------111
  990. {'tst': 0},
  991. {'rval': '-1'}, // HAd['rVal']
  992. {'rcfp': '-1'}, // HAd['rCFP']
  993. {'nfas': 30261693},
  994. {'jsrf': "PiZtE"},
  995. {'jsrf1': dbd[0]}, //开始时间戳 计算的值 会变
  996. {'jsrf2': dbd[1]},
  997. {'signals': '0'},
  998. {'mwd': "0"},
  999. {'hea': ''},
  1000. {'dvc': ''['concat'](dvc, ',')['concat'](0, ',')['concat']("e+j+k+f+i+b+g+h+l+d+c+a+")}, // !!! ------------
  1001. {'srd': "0"}
  1002. ];
  1003. }
  1004. function fpc(val) {
  1005. var TSK = function (INK) {
  1006. if (INK == null)
  1007. return -1;
  1008. var I8K = 0;
  1009. for (var IjK = 0; IjK < INK["length"]; IjK++) {
  1010. var UQK = INK["charCodeAt"](IjK);
  1011. if (UQK < 128) {
  1012. I8K = I8K + UQK;
  1013. }
  1014. }
  1015. return I8K;
  1016. };
  1017. return "".concat(TSK(val));
  1018. }
  1019. function get_din(startTs) {
  1020. // 顺序不能乱写,要和网站一样
  1021. // PMK ------------------------------------------ ran 生成 ----------------------------------------------------------
  1022. var ZEK = Math.random()
  1023. var KDK = parseInt(ZEK * 1000 / 2, 10)
  1024. var ran = "".concat(ZEK).slice(0, 11) + KDK
  1025. return [
  1026. {
  1027. "swi": 1920
  1028. },
  1029. {
  1030. "ucs": "8106"
  1031. },
  1032. {
  1033. "wih": 919
  1034. },
  1035. {
  1036. "ua": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/135.0.0.0 Safari/537.36"
  1037. },
  1038. {
  1039. "adp": "cpen:0,i1:0,dm:0,cwen:0,non:1,opc:0,fc:0,sc:0,wrc:1,isc:0,vib:1,bat:1,x11:0,x12:1"
  1040. },
  1041. {
  1042. "wdr": 0
  1043. },
  1044. {
  1045. "npl": 5
  1046. },
  1047. {
  1048. "tsd": 0
  1049. },
  1050. {
  1051. "hz1": 430171
  1052. },
  1053. {
  1054. "ran": ran //
  1055. },
  1056. {
  1057. "nal": "zh-CN"
  1058. },
  1059. {
  1060. "pha": 0
  1061. },
  1062. {
  1063. "ash": 1040
  1064. },
  1065. {
  1066. "wow": 1920
  1067. },
  1068. {
  1069. "she": 1080
  1070. },
  1071. {
  1072. "xag": 12147
  1073. },
  1074. {
  1075. "nps": "20030107"
  1076. },
  1077. {
  1078. "asw": 1920
  1079. },
  1080. {
  1081. "ibr": 0
  1082. },
  1083. {
  1084. "nap": "Gecko"
  1085. },
  1086. {
  1087. "dau": 0
  1088. },
  1089. {
  1090. "wiw": 720
  1091. },
  1092. {
  1093. "hal": startTs / 2
  1094. }
  1095. ]
  1096. }
  1097. // console.log(getObj31(1746605429721));
  1098. /**---------------------------------------------加密过程--------------------------------------------------------**/
  1099. // 用到的数字变量,一般不变 ----------------------------------------------
  1100. mU = [
  1101. -1,
  1102. -1,
  1103. -1,
  1104. -1,
  1105. -1,
  1106. -1,
  1107. -1,
  1108. -1,
  1109. -1,
  1110. -1,
  1111. -1,
  1112. -1,
  1113. -1,
  1114. -1,
  1115. -1,
  1116. -1,
  1117. -1,
  1118. -1,
  1119. -1,
  1120. -1,
  1121. -1,
  1122. -1,
  1123. -1,
  1124. -1,
  1125. -1,
  1126. -1,
  1127. -1,
  1128. -1,
  1129. -1,
  1130. -1,
  1131. -1,
  1132. -1,
  1133. 0,
  1134. 1,
  1135. -1,
  1136. 2,
  1137. 3,
  1138. 4,
  1139. 5,
  1140. -1,
  1141. 6,
  1142. 7,
  1143. 8,
  1144. 9,
  1145. 10,
  1146. 11,
  1147. 12,
  1148. 13,
  1149. 14,
  1150. 15,
  1151. 16,
  1152. 17,
  1153. 18,
  1154. 19,
  1155. 20,
  1156. 21,
  1157. 22,
  1158. 23,
  1159. 24,
  1160. 25,
  1161. 26,
  1162. 27,
  1163. 28,
  1164. 29,
  1165. 30,
  1166. 31,
  1167. 32,
  1168. 33,
  1169. 34,
  1170. 35,
  1171. 36,
  1172. 37,
  1173. 38,
  1174. 39,
  1175. 40,
  1176. 41,
  1177. 42,
  1178. 43,
  1179. 44,
  1180. 45,
  1181. 46,
  1182. 47,
  1183. 48,
  1184. 49,
  1185. 50,
  1186. 51,
  1187. 52,
  1188. 53,
  1189. 54,
  1190. 55,
  1191. 56,
  1192. 57,
  1193. -1,
  1194. 58,
  1195. 59,
  1196. 60,
  1197. 61,
  1198. 62,
  1199. 63,
  1200. 64,
  1201. 65,
  1202. 66,
  1203. 67,
  1204. 68,
  1205. 69,
  1206. 70,
  1207. 71,
  1208. 72,
  1209. 73,
  1210. 74,
  1211. 75,
  1212. 76,
  1213. 77,
  1214. 78,
  1215. 79,
  1216. 80,
  1217. 81,
  1218. 82,
  1219. 83,
  1220. 84,
  1221. 85,
  1222. 86,
  1223. 87,
  1224. 88,
  1225. 89,
  1226. 90,
  1227. 91
  1228. ] // 不变的
  1229. Dz = " !#$%&()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^_`abcdefghijklmnopqrstuvwxyz{|}~"
  1230. Y8 = [
  1231. 4095,
  1232. 4,
  1233. 0,
  1234. 255,
  1235. 39,
  1236. 65535,
  1237. 65793,
  1238. 4294967295,
  1239. 8388607,
  1240. 8,
  1241. 4282663,
  1242. 4411664,
  1243. 2048,
  1244. 3600,
  1245. 4096,
  1246. 8192,
  1247. 9,
  1248. 1,
  1249. 2,
  1250. 6,
  1251. 18,
  1252. 19,
  1253. 20,
  1254. 22,
  1255. 23,
  1256. 31,
  1257. 10,
  1258. 10000,
  1259. 100,
  1260. 150,
  1261. 25,
  1262. 3,
  1263. 112,
  1264. 1000,
  1265. 192,
  1266. 4294967296,
  1267. 2016,
  1268. 999999,
  1269. 5,
  1270. 1.81,
  1271. 32,
  1272. 3000,
  1273. 1.73,
  1274. 2.11,
  1275. 7,
  1276. 12,
  1277. 11,
  1278. 2222,
  1279. 3600000,
  1280. 77,
  1281. 1.67,
  1282. 1.43
  1283. ]
  1284. // 加密函数 ----------------------------------------------
  1285. // function fun1(qEU, RqU) {
  1286. // var UM9 = qEU['split'](":")
  1287. // ;
  1288. // for (hw9 = 0; hw9 < UM9["length"]; hw9++) {
  1289. // XHU = 17233 % UM9.length;
  1290. // RqU *= 65793;
  1291. // RqU &= J[b8()[V8(Uv)](Eh, zV, RQ, LI)]();
  1292. // RqU += J[EJ(typeof BF()[qx(WF)], vV('', [][[]])) ? BF()[qx(zt)](Ft, RdU) : BF()[qx(ZI)].apply(null, [s6, Nn])]();
  1293. // RqU &= Y8[qk];
  1294. // xBU = cR(LW(B3(RqU, qk), Y8[H5]), nUU[BF()[qx(nI)].call(null, qw, hJ)]);
  1295. // RqU *= J[Bk()[gQ(zt)](m9, XQ, WF, p8)]();
  1296. // RqU &= Y8[hw];
  1297. // RqU += Y8[w9];
  1298. // RqU &= Y8[qk];
  1299. // BDU = nUU[XHU];
  1300. // nUU[XHU] = nUU[xBU];
  1301. // nUU[xBU] = BDU
  1302. // }
  1303. // bF9 = UM9['join'](":")
  1304. // return bF9
  1305. // }
  1306. function fun1(En9, W59) {
  1307. var UM9 = En9['split'](":")
  1308. ;
  1309. for (hw9 = 0; hw9 < UM9["length"]; hw9++) {
  1310. hj9 = (W59 >> 8 & 65535) % UM9['length'];
  1311. W59 *= 65793;
  1312. W59 &= 4294967295;
  1313. W59 += 4282663;
  1314. W59 &= 8388607;
  1315. JO9 = (W59 >> 8 & 65535) % UM9["length"];
  1316. W59 *= 65793;
  1317. W59 &= 4294967295;
  1318. W59 += 4282663;
  1319. W59 &= 8388607;
  1320. M09 = UM9[hj9];
  1321. UM9[hj9] = UM9[JO9];
  1322. UM9[JO9] = M09;
  1323. }
  1324. bF9 = UM9['join'](":")
  1325. return bF9
  1326. }
  1327. function fun2(Ig, Bx) {
  1328. var tv = "";
  1329. for (var sm = 0; sm < Ig['length']; sm++) {
  1330. var ZT = Ig['charAt'](sm);
  1331. var tE = Bx >> 8 & 65535;
  1332. Bx *= 65793;
  1333. Bx &= 4294967295;
  1334. Bx += 4282663;
  1335. Bx &= 8388607;
  1336. var pz = mU[Ig['charCodeAt'](sm)]; // 注意!!!
  1337. var Ad = ZT["codePointAt"](0);
  1338. if (Ad >= 32 && Ad < 127) {
  1339. pz = mU[Ad];
  1340. }
  1341. if (pz >= 0) {
  1342. var UE = tE % Dz['length'];
  1343. pz += UE;
  1344. pz %= Dz["length"];
  1345. ZT = Dz[pz];
  1346. }
  1347. tv += ZT;
  1348. }
  1349. return tv
  1350. }
  1351. function getObj31(startTs) {
  1352. // 可写死的值
  1353. let ver = "v9ucY4fEG2y0Leez0dfshyVgzMtDB0Id4mE701wasUc=", // 不用和网站保持一致,但下面加密需要一致
  1354. fpt = ";-1;dis;,7;true;true;true;-480;true;24;24;true;false;-1", // 不变
  1355. din = get_din(startTs), // 用到 2 次,
  1356. ajr = get_ajr(din), // 用到 2 次,且要一致 要注意, 里面入参会变 这个入参不咋变可写死吧
  1357. url = "https://www.jetstar.com/hk/zh/home?adults=1&destination=OOL&flexible=1&flight-type=1&origin=PVG&selected-departure-date=2025-06-30&tab=1",
  1358. dsi = [
  1359. {
  1360. "get": ""
  1361. },
  1362. {
  1363. "set": "0"
  1364. },
  1365. {
  1366. "ico": "070f409b82df3bdd2f51a6415c7895353c153c47fe6dd8a0f87f3d14c46ccb2b"
  1367. },
  1368. {
  1369. "ift": "3"
  1370. },
  1371. {
  1372. "xof": "4,5,1,1,8"
  1373. },
  1374. {
  1375. "xot": "4,5,1,1,8"
  1376. },
  1377. {
  1378. "wev": "Google Inc. (Intel);wev;Google Inc. (Intel)"
  1379. },
  1380. {
  1381. "wre": "Google Inc. (Intel);wre;Google Inc. (Intel)"
  1382. },
  1383. {
  1384. "wdr": "0"
  1385. },
  1386. {
  1387. "iks": ""
  1388. },
  1389. {
  1390. "lds": "1"
  1391. },
  1392. {
  1393. "sst": ""
  1394. }
  1395. ],
  1396. // mev 可写死
  1397. mev = "0,1,114,1356,242;1,1,694,1351,250;2,1,783,1295,311;3,1,838,1281,331;4,1,1306,1275,333;5,1,1311,1266,333;6,1,1322,1255,333;7,1,1337,1233,337;8,1,1354,1216,340;9,1,1370,1209,340;10,1,1394,1202,340;11,1,1403,1201,340;12,1,2892,1191,340;13,1,2905,1183,340;14,1,2921,1181,339;15,1,3038,1177,338;16,1,3072,1175,336;17,1,3445,1174,336;18,1,3629,1170,336;19,1,3656,1169,336;20,1,3673,1167,337;21,1,3689,1163,338;22,1,3706,1152,338;23,1,3722,1135,338;24,1,3739,1113,328;25,1,3757,1080,302;26,1,3772,1052,281;27,1,3789,1006,251;28,1,3806,939,209;29,1,3823,865,174;30,1,3840,834,150;31,1,3857,820,141;32,1,3873,818,134;33,1,3889,818,123;34,1,3906,818,112;35,1,3922,818,103;36,1,3940,819,98;37,1,3956,820,96;38,1,4084,822,96;39,1,4106,827,105;40,1,4123,832,109;41,1,4139,843,112;42,1,4156,866,112;43,1,4173,908,105;44,1,4190,968,105;45,1,4253,1340,56;46,1,4281,1388,35;47,1,4294,1393,31;48,1,4373,1390,30;49,1,4390,1378,27;50,1,4406,1368,23;51,1,4424,1357,19;52,1,4440,1348,16;53,1,4457,1346,14;54,1,4490,1344,13;55,1,4507,1337,10;56,1,4523,1332,7;57,1,4533,1327,4;58,1,5324,1072,69;59,1,5343,1062,69;60,1,5357,1054,69;61,1,5374,1046,69;62,1,5390,1034,68;63,1,5407,1021,64;64,1,5424,1014,63;65,1,5443,1005,61;66,1,5458,994,60;67,1,5474,977,55;68,1,5491,965,51;69,1,5507,958,47;70,1,5525,950,45;71,1,5542,944,45;72,1,5557,943,45;73,3,5633,943,45,-1;74,4,5725,943,45,-1;75,2,5728,943,45,-1;76,1,8014,509,619;77,1,8021,509,622;78,1,8029,502,628;79,1,8103,447,670;80,1,8145,447,674;81,1,8156,447,675;82,1,8172,448,675;83,1,8332,449,675;84,1,8340,456,675;85,1,8348,465,672;86,1,8356,476,670;87,1,8364,487,668;88,1,8372,498,665;89,1,8380,511,658;90,1,8389,521,655;91,1,8396,530,652;92,1,8404,532,650;93,1,8414,533,649;94,1,8426,534,649;95,3,8544,534,649,-1;"
  1398. ;
  1399. return {
  1400. "ver": ver,
  1401. "fpt": fpt,
  1402. "fpc": "4542",
  1403. "ajr": ajr,
  1404. "din": din,
  1405. "eem": "do_en,dm_en,t_en",
  1406. "ffs": "-1,0,0,0,2403,-1,0;0,0,0,0,1203,-1,0;-1,0,0,0,2403,-1,0;0,0,0,0,1203,-1,0;-1,0,0,0,1415,-1,0;-1,0,0,0,-1,-1,0;",
  1407. "vev": "",
  1408. "inf": "",
  1409. "ajt": '0,0', // 第2个0 生成 dvc 的参数4
  1410. "kev": "",
  1411. "dme": "",
  1412. "mev": mev,
  1413. "doe": "",
  1414. "pur": url,
  1415. "pev": "",
  1416. "mst": mst(startTs, ajr),
  1417. "o9": 0,
  1418. "tev": "",
  1419. "sde": "0,0,0,0,1,0,0",
  1420. "pmo": "",
  1421. "dpw": "",
  1422. "pac": "",
  1423. "per": '8', // 逆向
  1424. "dsi": dsi,
  1425. "wsl": "2248146944,432552777,314740013,250,20,1,1,1,0,1,,,,,,0,,,1,1",
  1426. "hls": "-1,,,1,1",
  1427. "pde": "",
  1428. "oev": "",
  1429. "if": "",
  1430. "fwd": [{"fmh": ""}, {"fmz": "1"}, {"ssh": "79d476b3ee7a1d053d47c234f8b00e881ef941614b47791e1d4610cb5e47a0ff"}],
  1431. }
  1432. }
  1433. function encrypt1(startTs) {
  1434. // 第2个数字会变化,但第一次请求无所谓/不校验参数,主要是第2次
  1435. MZN = [8888888, 1111998] // 第一次获取bmsz 没有cookie
  1436. args = getObj31(startTs);
  1437. U19 = JSON["stringify"](args); // 第1次生成: 将指纹对象转json字符串
  1438. U19 = fun1(U19, MZN[1]); // 第2次生成: 根据数组的数字
  1439. U19 = fun2(U19, MZN[0]) // 第3次生成: 第一次请求获取响应 bm_sz 时,数字是 8888888; 第二次请求时,数字是从 bm_sz 提取的
  1440. // console.log(U19)
  1441. var GK9 = "42,0,0,0,0,0";
  1442. ver = "v9ucY4fEG2y0Leez0dfshyVgzMtDB0Id4mE701wasUc="
  1443. var wC9 = `3;0;1;0;8888888;${ver}`; // 写死
  1444. // var wC9 = `3;0;1;0;8888888;tyHy8ivBZ0g4hKdhoz4jp3mD9tXi3JvM7MQ5v`; // 写死
  1445. U19 = ''.concat(wC9, ';')['concat'](GK9, ';')['concat'](U19); // 4
  1446. return U19
  1447. }
  1448. var Mv = function (bm_sz) {
  1449. // var CV = [8888888, 3978328];
  1450. var CV = [8888888, 1111998]; // 第2个数字会变化, 这个要和网页保持一致
  1451. if (bm_sz) {
  1452. var vT = decodeURIComponent(bm_sz)["split"]("~");
  1453. if (vT["length"] >= 4) {
  1454. var Wl = parseInt(vT[2], 10);
  1455. Wl = isNaN(Wl) ? 8888888 : Wl;
  1456. CV[0] = Wl;
  1457. }
  1458. }
  1459. return CV
  1460. };
  1461. function encrypt2(startTs, bm_sz) {
  1462. // ver 这个不可以写死 要网页保持一致
  1463. MZN = Mv(bm_sz); // 根据cookie bm_sz 动态生成 加密数字数组
  1464. args = getObj31(startTs)
  1465. U19 = JSON["stringify"](args); // 第1次生成: 将指纹对象转json字符串
  1466. U19 = fun1(U19, MZN[1]); // 第2次生成: 根据数组的数字
  1467. U19 = fun2(U19, MZN[0]) // 第3次生成: 第一次请求获取响应 bm_sz 时,数字是 8888888; 第二次请求时,数字是从 bm_sz 提取的
  1468. // console.log(U19)
  1469. // lE() BB DN9 PC9 是时间戳差值, mP是变化的数字, 参考最终输出结果: 36,82,0,0,2,561
  1470. // var GK9 = '36,82,0,0,2,252';
  1471. var GK9 = "78,0,0,0,0,0";// 时间戳差值 不能写死 要写活 否则依然不返回数据
  1472. var wC9 = `3;0;1;0;${MZN[0]};v9ucY4fEG2y0Leez0dfshyVgzMtDB0Id4mE701wasUc=`; // 写死
  1473. U19 = ''.concat(wC9, ';')['concat'](GK9, ';')['concat'](U19); // 4
  1474. // console.log(JSON.stringify(U19))
  1475. // U19 =
  1476. return U19
  1477. }
  1478. // bmsz = "92BF676C3DD979E01C44FB2085A5EB17~YAAQHWrRFzRVgemWAQAAVomREBt8eEC//siHZ6ZbSARsn9I5LSlX4gu9JMhr+mKMUqle7mBkR+FaMJRD6bqONlFEMRiSPt47mEXkvqd2XdhB42MWCDbDyBL4Kq5AQAUstK/W5QCqigla+wVukC/J8BCF4uUXQeC8RLQFt7nELruQ95bcwOZ0dcK+DLBJqhl7tbFUBXwJzTg59ijCrpx/3KIPbsVb8fOnX5+3HE1bgrwurqAVOB7ZLwDy2rz0MR4TZegpmu1LroCHjdbOC97Sr8Bm0vwycXsd3P67jSVGKtsjMkBWFXPYAnnZEfVYFWkCvq33qY4VAMwP0+liJr7oV/OtUSxJNKOXMARY6g==~3683381~3421233"
  1479. // console.log(encrypt2(1748328725946, bmsz));
  1480. // window.bmak = {
  1481. // startTs: 1748242237241
  1482. // }
  1483. // console.log(arg1.Gb(1, 1, 1, 1))
  1484. // console.log(getObj31(1748328725946));
  1485. // console.log(encrypt1());
  1486. // "c90db784e2a5dbbe92fb1e119eeceb1f471b4c780b33784a63fadbbbaab637fd"/
  1487. a = {
  1488. "ver": "v9ucY4fEG2y0Leez0dfshyVgzMtDB0Id4mE701wasUc=",
  1489. "fpt": ";-1;dis;,7;true;true;true;-480;true;24;24;true;false;-1",
  1490. "fpc": "4542",
  1491. "ajr": "82c8d35ede1eca98b35311b7c6ef233192a840284b8849a0eb081025f17fe972",
  1492. "din": [
  1493. {
  1494. "swi": 1920
  1495. },
  1496. {
  1497. "ucs": "8106"
  1498. },
  1499. {
  1500. "wih": 919
  1501. },
  1502. {
  1503. "ua": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/135.0.0.0 Safari/537.36"
  1504. },
  1505. {
  1506. "adp": "cpen:0,i1:0,dm:0,cwen:0,non:1,opc:0,fc:0,sc:0,wrc:1,isc:0,vib:1,bat:1,x11:0,x12:1"
  1507. },
  1508. {
  1509. "wdr": 0
  1510. },
  1511. {
  1512. "npl": 5
  1513. },
  1514. {
  1515. "tsd": 0
  1516. },
  1517. {
  1518. "hz1": 430151
  1519. },
  1520. {
  1521. "ran": "0.715393367357"
  1522. },
  1523. {
  1524. "nal": "zh-CN"
  1525. },
  1526. {
  1527. "pha": 0
  1528. },
  1529. {
  1530. "ash": 1040
  1531. },
  1532. {
  1533. "wow": 1920
  1534. },
  1535. {
  1536. "she": 1080
  1537. },
  1538. {
  1539. "xag": 12147
  1540. },
  1541. {
  1542. "nps": "20030107"
  1543. },
  1544. {
  1545. "asw": 1920
  1546. },
  1547. {
  1548. "ibr": 0
  1549. },
  1550. {
  1551. "nap": "Gecko"
  1552. },
  1553. {
  1554. "dau": 0
  1555. },
  1556. {
  1557. "wiw": 720
  1558. },
  1559. {
  1560. "hal": 874165025084.5
  1561. }
  1562. ],
  1563. "eem": "do_en,dm_en,t_en",
  1564. "ffs": "-1,0,0,0,2403,-1,0;0,0,0,0,1203,-1,0;-1,0,0,0,2403,-1,0;0,0,0,0,1203,-1,0;-1,0,0,0,1415,-1,0;-1,0,0,0,-1,-1,0;",
  1565. "vev": "",
  1566. "inf": "",
  1567. "ajt": "0,0",
  1568. "kev": "",
  1569. "dme": "",
  1570. "mev": "",
  1571. "doe": "",
  1572. "pur": "https://www.jetstar.com/hk/zh/home?adults=1&destination=OOL&flexible=1&flight-type=1&origin=PVG&selected-departure-date=2025-06-30&tab=1",
  1573. "pev": "",
  1574. "mst": [
  1575. {
  1576. "kevl": 1
  1577. },
  1578. {
  1579. "mevl": 32
  1580. },
  1581. {
  1582. "tevl": 32
  1583. },
  1584. {
  1585. "devl": 0
  1586. },
  1587. {
  1588. "dmvl": 0
  1589. },
  1590. {
  1591. "pevl": 0
  1592. },
  1593. {
  1594. "tovl": 0
  1595. },
  1596. {
  1597. "delt": 0
  1598. },
  1599. {
  1600. "it": 0
  1601. },
  1602. {
  1603. "sts": 1748330050169
  1604. },
  1605. {
  1606. "fct": -999999
  1607. },
  1608. {
  1609. "dd2": 18703
  1610. },
  1611. {
  1612. "kc": 0
  1613. },
  1614. {
  1615. "mc": 0
  1616. },
  1617. {
  1618. "ww8": 0
  1619. },
  1620. {
  1621. "pc": 0
  1622. },
  1623. {
  1624. "tc": 0
  1625. },
  1626. {
  1627. "ssts": 7
  1628. },
  1629. {
  1630. "tst": 0
  1631. },
  1632. {
  1633. "rval": "-1"
  1634. },
  1635. {
  1636. "rcfp": "-1"
  1637. },
  1638. {
  1639. "nfas": 30261693
  1640. },
  1641. {
  1642. "jsrf": "PiZtE"
  1643. },
  1644. {
  1645. "jsrf1": 50901
  1646. },
  1647. {
  1648. "jsrf2": 61
  1649. },
  1650. {
  1651. "signals": "0"
  1652. },
  1653. {
  1654. "mwd": "0"
  1655. },
  1656. {
  1657. "hea": ""
  1658. },
  1659. {
  1660. "dvc": "ackfm99aahaci7hkByw9,0,e+j+k+f+i+b+g+h+l+d+c+a+"
  1661. },
  1662. {
  1663. "srd": "0"
  1664. }
  1665. ],
  1666. "o9": 0,
  1667. "tev": "",
  1668. "sde": "0,0,0,0,1,0,0",
  1669. "pmo": "",
  1670. "dpw": "",
  1671. "pac": "",
  1672. "per": "8",
  1673. "dsi": [
  1674. {
  1675. "get": ""
  1676. },
  1677. {
  1678. "set": "0"
  1679. },
  1680. {
  1681. "ico": "070f409b82df3bdd2f51a6415c7895353c153c47fe6dd8a0f87f3d14c46ccb2b"
  1682. },
  1683. {
  1684. "ift": "3"
  1685. },
  1686. {
  1687. "xof": "4,5,1,1,8"
  1688. },
  1689. {
  1690. "xot": "4,5,1,1,8"
  1691. },
  1692. {
  1693. "wev": "Google Inc. (Intel);wev;Google Inc. (Intel)"
  1694. },
  1695. {
  1696. "wre": "Google Inc. (Intel);wre;Google Inc. (Intel)"
  1697. },
  1698. {
  1699. "wdr": "0"
  1700. },
  1701. {
  1702. "iks": ""
  1703. },
  1704. {
  1705. "lds": "1"
  1706. },
  1707. {
  1708. "sst": ""
  1709. }
  1710. ],
  1711. "wsl": "2248146944,432552777,314740013,250,20,1,1,1,0,1,,,,,,0,,,1,1",
  1712. "hls": "-1,,,1,1",
  1713. "pde": "",
  1714. "oev": "",
  1715. "if": "",
  1716. "fwd": [
  1717. {
  1718. "fmh": ""
  1719. },
  1720. {
  1721. "fmz": ""
  1722. },
  1723. {
  1724. "ssh": "0"
  1725. }
  1726. ]
  1727. }
  1728. bm_sz = "\"92BF676C3DD979E01C44FB2085A5EB17~YAAQEmrRFyuZhwyXAQAAoG2XEBuOYAjoXIwgiwBLWYVe2jkUYI6q0SWViH13hM1Ox5I84Xcn05mVCtWAqF4hUE9KRg9P9zoB9BYYFNgpvHBQ1DOQgVz1n8TYLlGl8mJnPEXPE5np021ItId1GAFDHUp5lILm8zq2PHjibMmRNwefZ9NNw4nXGWzY4rWp4wumwmjDycUIijUiZnEXDJvAAI71MRJyLY3rCBka6RFhAjVYyMip5SdeelyBKv7Uy9bNuctCb5EoFDYV4DupkNf9IqlJQqt0gPYsgd7ttsV0tHiT76kz7E7YqwOEQmmCY9kmNjdISOVORiXRsfPzGIwVHpkdAL9F6hj4OzHTOZGZHUTZPoVrFGcM1NUvxZiEMiNCZEpYD+r79g==~3683381~3421233\""
  1729. MZN = Mv(bm_sz);
  1730. U19 = JSON["stringify"](a); // 第1次生成: 将指纹对象转json字符串
  1731. U19 = fun1(U19, MZN[1]); // 第2次生成: 根据数组的数字
  1732. U19 = fun2(U19, MZN[0])
  1733. console.log(U19)