日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

淘宝封杀selenium的ua算法分析

發布時間:2023/12/14 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 淘宝封杀selenium的ua算法分析 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

接上一回,我們大致梳理了淘寶封殺selenium的思路,找到核心的參數ua,并拋出疑問:為什么ua每次都不一樣,并且隨著使用次數次數增加長度越來越長。

?

關于為什么每次獲取的ua參數長度都不一樣,有個網友留言讓我豁然開朗:

`window.__defineGetter__('_f_', function (){return new Date()})

?

原理就是給這個屬性綁定一個輸出前的私有方法,每次在獲取該屬性的時候執行該私有方法,從而達到每次輸出的值都不一樣。

?

受此啟發,然后在仔細分析window對象,找到如下兩個關鍵信息

get _n:? s() arguments:Arguments [callee: ?, Symbol(Symbol.iterator): ?] caller:? () length:0 name:"s" prototype:{constructor: ?} __proto__:? () [[FunctionLocation]]:115.js?d=24:formatted:559 [[Scopes]]:Scopes[2] set _n:? () arguments:null caller:null length:0 name:"" prototype:{constructor: ?} __proto__:? () [[FunctionLocation]]:115.js?d=24:formatted:17214 [[Scopes]]:Scopes[3]

?

有get _n方法和set _n()方法,其中get方法對應115.js文件的559行;set方法對應115文件的17214行。

?

通過調試產生_n值的位置是在get方法中,該函數名為s函數,如下:

function s() { for (var e = 3; void 0 !== e; ) { var a = 3 & e , s = e >> 2 , c = 3 & s; switch (a) { case 0: !function() { switch (c) { case 0: b += "mp", e = 8; break; case 1: e = b ? 0 : 8; break; case 2: e = b ? 1 : 2; break; case 3: b += "romCo", e = 4 } }(); break; case 1: !function() { switch (c) { case 0: b += "atib", e = 2 } }(); break; case 2: b += "ility", S[b] = 1; var r = h(22, S); return r; case 3: var b = "f"; e = b ? 12 : 4 } } }

?

一堆混淆視聽的js,核心的東西只有一句var r = h(22, S); return r;

也就是h(22, S)函數產生了不同的ua

?

?

?

事實證明就是這個h函數決定了ua,繼續看h函數

function h(c, o, n, i, p) { var u, d, v, C, j, E, R, _, T, L, M, N, D, P, I, U, B, F, z, H, Q, V, G, W, X, q, Y, J, K, Z, $, ee, ae, se, ce, re, be, ke, te, oe, ne, ie, he, pe, ue, de, ve, fe, le, ge, Ce, we, me, Ae, Se, je, xe, Oe, ye, Ee, Re, _e, Te, Le, Me, Ne, De, Pe, Ie, Ue, Be, Fe, ze, He, Qe, Ve, Ge, We, Xe, qe, Ye, Je, Ke, Ze, $e, ea, aa, sa, ca, ra, ba, ka, ta, oa, na, ia, ha, pa, ua, da, va, fa, la, ga, Ca, wa, ma, Aa, Sa, ja, xa, Oa, ya, Ea, Ra, _a, Ta, La, Ma, Na, Da, Pa, Ia, Ua, Ba, Fa, za, Ha, Qa, Va, Ga, Wa, Xa, qa, Ya, Ja, Ka, Za, $a, es, as, ss, cs, rs, bs, ks, ts, os, ns, is, hs, ps, us, ds, vs; us = this, is = -1, hs = 0; try { for (var fs = 15782; void 0 !== fs;) { var ls = 31 & fs, gs = fs >> 5, Cs = 31 & gs, ws = gs >> 5, ms = 31 & ws; switch (ls) { case 0: ! function() { switch (Cs) { case 0: ! function() { switch (ms) { case 0: ie = $.charCodeAt(se) - 704, he += String.fromCharCode(ie), fs = 13639; break; case 1: H.push(1), H.push(5), P = void 0, X = Te, C = X[de], X = [], u = "ecapsonom", F = u.split("").reverse().join(""), fs = 4168; break; case 2: R = E, E = 64 > R, fs = E ? 18853 : 7621; break; case 3: L = E[v], T[v] = new RegExp(L), fs = 21952; break; case 4: fs = ie < be.length ? 11652 : 15781; break; case 5: ee += "ingClient", fs = 21221; ······ 省略兩千行左右

?

其中us=this,this是全局對象

?

?

?

對于h函數,一堆js已經看不過來了,有研究的網友可以提供點線索。ua的分析就先到這里了,下回分析password的加密。

?

欲知后事如何,歡迎關注。

?

------------------------------

?

ID:Python之戰

?

|作|者|公(zhong)號:python之戰

?

專注Python,專注于網絡爬蟲、RPA的學習-踐行-總結

?

喜歡研究技術瓶頸并分享,歡迎圍觀,共同學習。

?

獨學而無友,則孤陋而寡聞!

?

---------------------------

總結

以上是生活随笔為你收集整理的淘宝封杀selenium的ua算法分析的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。