Last active
December 3, 2024 16:13
-
-
Save borgle/c278a56511aa5cea39bd2a5b62d5f7e9 to your computer and use it in GitHub Desktop.
在访问 https://appleid.apple.com/account?&localang=CN-ZH 这个页面的时候,页面会ajax一个特殊的header请求,其中的X-Apple-I-FD-Client-Info信息是一个json对象,本gist是整理后的F值获取方式源码。
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
(function(m) { | |
function g(e) { | |
try { | |
if (navigator.plugins && navigator.plugins.length) | |
for (var t = 0; t < navigator.plugins.length; t++) { | |
var n = navigator.plugins[t]; | |
if (n.name.indexOf(e) >= 0) | |
return n.name + (n.description ? "|" + n.description : "") | |
} | |
} catch (r) {} | |
return "" | |
} | |
function z(e) { | |
try { | |
if (!e) | |
return A(); | |
var t; | |
e: { | |
var n; | |
try { | |
n = document.getElementById(e) | |
} catch (r) {} | |
if (null === n || "undefined" == typeof n) | |
try { | |
n = document.getElementsByName(e)[0] | |
} catch (a) {} | |
if (null === n || "undefined" == typeof n) | |
for (var i = 0; i < document.forms.length; i++) | |
for (var o = document.forms[i], s = 0; s < o.elements.length; s++) { | |
var u = o[s]; | |
if (u.name === e || u.id === e) { | |
t = u; | |
break e | |
} | |
} | |
t = n | |
} | |
if (null !== t) | |
try { | |
t.value = A() | |
} catch (l) { | |
t.value = escape(l.message) | |
} | |
} catch (c) {} | |
} | |
function A(a) { | |
var c = new Date | |
, b = new Date | |
, e = [t("TF1"), t("020"), function() { | |
return ScriptEngineMajorVersion() | |
} | |
, function() { | |
return ScriptEngineMinorVersion() | |
} | |
, function() { | |
return ScriptEngineBuildVersion() | |
} | |
, function() { | |
return i("{7790769C-0471-11D2-AF11-00C04FA35D02}") | |
} | |
, function() { | |
return i("{89820200-ECBD-11CF-8B85-00AA005B4340}") | |
} | |
, function() { | |
return i("{283807B5-2C60-11D0-A31D-00AA00B92C03}") | |
} | |
, function() { | |
return i("{4F216970-C90C-11D1-B5C7-0000F8051515}") | |
} | |
, function() { | |
return i("{44BBA848-CC51-11CF-AAFA-00AA00B6015C}") | |
} | |
, function() { | |
return i("{9381D8F2-0288-11D0-9501-00AA00B911A5}") | |
} | |
, function() { | |
return i("{4F216970-C90C-11D1-B5C7-0000F8051515}") | |
} | |
, function() { | |
return i("{5A8D6EE0-3E18-11D0-821E-444553540000}") | |
} | |
, function() { | |
return i("{89820200-ECBD-11CF-8B85-00AA005B4383}") | |
} | |
, function() { | |
return i("{08B0E5C0-4FCB-11CF-AAA5-00401C608555}") | |
} | |
, function() { | |
return i("{45EA75A0-A269-11D1-B5BF-0000F8051515}") | |
} | |
, function() { | |
return i("{DE5AED00-A4BF-11D1-9948-00C04F98BBC9}") | |
} | |
, function() { | |
return i("{22D6F312-B0F6-11D0-94AB-0080C74C7E95}") | |
} | |
, function() { | |
return i("{44BBA842-CC51-11CF-AAFA-00AA00B6015B}") | |
} | |
, function() { | |
return i("{3AF36230-A269-11D1-B5BF-0000F8051515}") | |
} | |
, function() { | |
return i("{44BBA840-CC51-11CF-AAFA-00AA00B6015C}") | |
} | |
, function() { | |
return i("{CC2A9BA0-3BDD-11D0-821E-444553540000}") | |
} | |
, function() { | |
return i("{08B0E5C0-4FCB-11CF-AAA5-00401C608500}") | |
} | |
, function() { | |
return eval("navigator.appCodeName") | |
} | |
, function() { | |
return eval("navigator.appName") | |
} | |
, function() { | |
return eval("navigator.appVersion") | |
} | |
, function() { | |
return u(["navigator.productSub", "navigator.appMinorVersion"]) | |
} | |
, function() { | |
return eval("navigator.browserLanguage") | |
} | |
, function() { | |
return eval("navigator.cookieEnabled") | |
} | |
, function() { | |
return u(["navigator.oscpu", "navigator.cpuClass"]) | |
} | |
, function() { | |
return eval("navigator.onLine") | |
} | |
, function() { | |
return eval("navigator.platform") | |
} | |
, function() { | |
return eval("navigator.systemLanguage") | |
} | |
, function() { | |
return eval("navigator.userAgent") | |
} | |
, function() { | |
return u(["navigator.language", "navigator.userLanguage"]) | |
} | |
, function() { | |
return eval("document.defaultCharset") | |
} | |
, function() { | |
return eval("document.domain") | |
} | |
, function() { | |
return eval("screen.deviceXDPI") | |
} | |
, function() { | |
return eval("screen.deviceYDPI") | |
} | |
, function() { | |
return eval("screen.fontSmoothingEnabled") | |
} | |
, function() { | |
return eval("screen.updateInterval") | |
} | |
, function() { | |
return 0 !== Math.abs(p - q) | |
} | |
, function() { | |
return C(c) | |
} | |
, function() { | |
return "@UTC@" | |
} | |
, function() { | |
var e = 0; | |
return e = 0, | |
C(c) && (e = Math.abs(p - q)), | |
e = -(c.getTimezoneOffset() + e) / 60; | |
} | |
, function() { | |
return new Date(2005,5,7,21,33,44,888).toLocaleString() | |
} | |
, function() { | |
return eval("screen.width") | |
} | |
, function() { | |
return eval("screen.height") | |
} | |
, function() { | |
return n.Acrobat | |
} | |
, function() { | |
return n.Flash | |
} | |
, function() { | |
return n.QuickTime | |
} | |
, function() { | |
return n["Java Plug-in"] | |
} | |
, function() { | |
return n.Director | |
} | |
, function() { | |
return n.Office | |
} | |
, function() { | |
return "@CT@" | |
} | |
, function() { | |
return p | |
} | |
, function() { | |
return q | |
} | |
, function() { | |
return c.toLocaleString() | |
} | |
, function() { | |
return eval("screen.colorDepth") | |
} | |
, function() { | |
return eval("window.screen.availWidth") | |
} | |
, function() { | |
return eval("window.screen.availHeight") | |
} | |
, function() { | |
return eval("window.screen.availLeft") | |
} | |
, function() { | |
return eval("window.screen.availTop") | |
} | |
, function() { | |
return g("Acrobat") | |
} | |
, function() { | |
return g("Adobe SVG") | |
} | |
, function() { | |
return g("Authorware") | |
} | |
, function() { | |
return g("Citrix ICA") | |
} | |
, function() { | |
return g("Director") | |
} | |
, function() { | |
return g("Flash") | |
} | |
, function() { | |
return g("MapGuide") | |
} | |
, function() { | |
return g("MetaStream") | |
} | |
, function() { | |
return g("PDFViewer") | |
} | |
, function() { | |
return g("QuickTime") | |
} | |
, function() { | |
return g("RealOne") | |
} | |
, function() { | |
return g("RealPlayer Enterprise") | |
} | |
, function() { | |
return g("RealPlayer Plugin") | |
} | |
, function() { | |
return g("Seagate Software Report") | |
} | |
, function() { | |
return g("Silverlight") | |
} | |
, function() { | |
return g("Windows Media") | |
} | |
, function() { | |
return g("iPIX") | |
} | |
, function() { | |
return g("nppdf.so") | |
} | |
, function() { | |
var e = document.createElement("span"); | |
e.innerHTML = " ", | |
e.style.position = "absolute", | |
e.style.left = "-9999px", | |
document.body.appendChild(e); | |
var t = e.offsetHeight; | |
return document.body.removeChild(e), | |
t | |
} | |
, k(), k(), k(), k(), k(), k(), k(), k(), k(), k(), k(), k(), k(), k(), function() { | |
return "5.6.1-0" | |
} | |
, k()]; | |
F(); | |
for (var f = "", d = 0; d < e.length; d++) { | |
a && (f += v(e[d].toString(), '"', "'", !0), | |
f += "="); | |
var h; | |
try { | |
h = e[d](this) | |
} catch (l) { | |
h = "" | |
} | |
f += a ? h : escape(h), | |
f += ";", | |
a && (f += "\\n") | |
} | |
return f = v(f, escape("@UTC@"), (new Date).getTime()), | |
f = v(f, escape("@CT@"), (new Date).getTime() - b.getTime()), | |
D && w ? w(f) : f | |
} | |
function v(e, t, n, r) { | |
"boolean" != typeof r && (r = !1); | |
for (var a, i = !0; (a = e.indexOf(t)) >= 0 && (r || i); ) | |
e = e.substr(0, a) + n + e.substr(a + t.length), | |
i = !1; | |
return e | |
} | |
function C(e) { | |
var t = Math.min(p, q); | |
return 0 !== Math.abs(p - q) && e.getTimezoneOffset() === t | |
} | |
function F() { | |
for (var e = ["Acrobat", "Flash", "QuickTime", "Java Plug-in", "Director", "Office"], t = 0; t < e.length; t++) { | |
var r = e[t] | |
, a = n | |
, i = r | |
, o = r; | |
r = ""; | |
try { | |
if (navigator.plugins && navigator.plugins.length) { | |
var s = RegExp(o + ".* ([0-9._]+)"); | |
for (o = 0; o < navigator.plugins.length; o++) { | |
var u = s.exec(navigator.plugins[o].name); | |
null === u && (u = s.exec(navigator.plugins[o].description)), | |
u && (r = u[1]) | |
} | |
} else if (window.ActiveXObject && x[o]) | |
try { | |
var l = new ActiveXObject(x[o][0]); | |
r = x[o][1](l) | |
} catch (c) { | |
r = "" | |
} | |
} catch (d) { | |
r = d.message | |
} | |
a[i] = r | |
} | |
} | |
function u(a) { | |
for (var c = 0; c < a.length; c++) | |
try { | |
var b = eval(a[c]); | |
if (b) | |
return b | |
} catch (e) {} | |
return "" | |
} | |
function i(e) { | |
var t = ""; | |
try { | |
"undefined" != typeof o.a.getComponentVersion && (t = o.a.getComponentVersion(e, "ComponentID")) | |
} catch (n) { | |
e = n.message.length, | |
e = e > 40 ? 40 : e, | |
t = escape(n.message.substr(0, e)) | |
} | |
return t | |
} | |
function t(e) { | |
return function() { | |
return e | |
} | |
} | |
function G(e) { | |
function t(e) { | |
for (r = r << e[0] | e[1], | |
a += e[0]; a >= 6; ) | |
e = r >> a - 6 & 63, | |
n += s.substring(e, e + 1), | |
a -= 6, | |
r ^= e << a | |
} | |
var n = "" | |
, r = 0 | |
, a = 0; | |
t([6, (7 & e.length) << 3 | 0]), | |
t([6, 56 & e.length | 1]); | |
for (var i = 0; i < e.length; i++) { | |
if (void 0 == y[e.charCodeAt(i)]) | |
return; | |
t(y[e.charCodeAt(i)]) | |
} | |
return t(y[0]), | |
a > 0 && t([6 - a, 0]), | |
n | |
} | |
function w(e) { | |
for (var t = G, n = e, r = 0; E[r]; r++) | |
n = n.split(E[r]).join(String.fromCharCode(r + 1)); | |
if (t = t(n), | |
void 0 == t) | |
return e; | |
for (n = 65535, | |
r = 0; r < e.length; r++) | |
n = 65535 & (n >>> 8 | n << 8), | |
n ^= 255 & e.charCodeAt(r), | |
n ^= (255 & n) >> 4, | |
n ^= n << 12 & 65535, | |
n ^= (255 & n) << 5 & 65535; | |
return n &= 65535, | |
e = "", | |
e += s.charAt(n >>> 12), | |
e += s.charAt(n >>> 6 & 63), | |
e += s.charAt(63 & n), | |
t += e | |
} | |
options = m || {}; | |
m = options.ctx || window; | |
var D = options.hasOwnProperty("compress") ? options.compress : !0 | |
, o = {} | |
, p = new Date(2005,0,15).getTimezoneOffset() | |
, q = new Date(2005,6,15).getTimezoneOffset() | |
, n = [] | |
, k = t("") | |
, x = { | |
Flash: ["ShockwaveFlash.ShockwaveFlash", function(e) { | |
return e.getVariable("$version") | |
} | |
], | |
Director: ["SWCtl.SWCtl", function(e) { | |
return e.ShockwaveVersion("") | |
} | |
] | |
}; | |
try { | |
o.a = document.createElement("span"), | |
"undefined" != typeof o.a.addBehavior && o.a.addBehavior("#default#clientCaps") | |
} catch (H) {} | |
n = {}; | |
var y = { | |
1: [4, 15], | |
110: [8, 239], | |
74: [8, 238], | |
57: [7, 118], | |
56: [7, 117], | |
71: [8, 233], | |
25: [8, 232], | |
101: [5, 28], | |
104: [7, 111], | |
4: [7, 110], | |
105: [6, 54], | |
5: [7, 107], | |
109: [7, 106], | |
103: [9, 423], | |
82: [9, 422], | |
26: [8, 210], | |
6: [7, 104], | |
46: [6, 51], | |
97: [6, 50], | |
111: [6, 49], | |
7: [7, 97], | |
45: [7, 96], | |
59: [5, 23], | |
15: [7, 91], | |
11: [8, 181], | |
72: [8, 180], | |
27: [8, 179], | |
28: [8, 178], | |
16: [7, 88], | |
88: [10, 703], | |
113: [11, 1405], | |
89: [12, 2809], | |
107: [13, 5617], | |
90: [14, 11233], | |
42: [15, 22465], | |
64: [16, 44929], | |
0: [16, 44928], | |
81: [9, 350], | |
29: [8, 174], | |
118: [8, 173], | |
30: [8, 172], | |
98: [8, 171], | |
12: [8, 170], | |
99: [7, 84], | |
117: [6, 41], | |
112: [6, 40], | |
102: [9, 319], | |
68: [9, 318], | |
31: [8, 158], | |
100: [7, 78], | |
84: [6, 38], | |
55: [6, 37], | |
17: [7, 73], | |
8: [7, 72], | |
9: [7, 71], | |
77: [7, 70], | |
18: [7, 69], | |
65: [7, 68], | |
48: [6, 33], | |
116: [6, 32], | |
10: [7, 63], | |
121: [8, 125], | |
78: [8, 124], | |
80: [7, 61], | |
69: [7, 60], | |
119: [7, 59], | |
13: [8, 117], | |
79: [8, 116], | |
19: [7, 57], | |
67: [7, 56], | |
114: [6, 27], | |
83: [6, 26], | |
115: [6, 25], | |
14: [6, 24], | |
122: [8, 95], | |
95: [8, 94], | |
76: [7, 46], | |
24: [7, 45], | |
37: [7, 44], | |
50: [5, 10], | |
51: [5, 9], | |
108: [6, 17], | |
22: [7, 33], | |
120: [8, 65], | |
66: [8, 64], | |
21: [7, 31], | |
106: [7, 30], | |
47: [6, 14], | |
53: [5, 6], | |
49: [5, 5], | |
86: [8, 39], | |
85: [8, 38], | |
23: [7, 18], | |
75: [7, 17], | |
20: [7, 16], | |
2: [5, 3], | |
73: [8, 23], | |
43: [9, 45], | |
87: [9, 44], | |
70: [7, 10], | |
3: [6, 4], | |
52: [5, 1], | |
54: [5, 0] | |
} | |
, E = ["%20", ";;;", "%3B", "%2C", "und", "fin", "ed;", "%28", "%29", "%3A", "/53", "ike", "Web", "0;", ".0", "e;", "on", "il", "ck", "01", "in", "Mo", "fa", "00", "32", "la", ".1", "ri", "it", "%u", "le"] | |
, s = ".0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyz"; | |
o.appidmsform = z, | |
o.f1b5 = w, | |
m.appidmsparm = o, | |
D && (m = navigator.userAgent.toLowerCase(), | |
"Gecko" === navigator.product && parseInt(m.substring(m.indexOf("rv:") + 3, m.indexOf(")", m.indexOf("rv:") + 3)).split(".")[0]) <= 2 && z()) | |
})(); | |
var F = window.appidmsparm.appidmsform(); |
Hello,
I'm writing a script auto registration apple ID in python. Do you have this code in python version?
Thanks.
就在我快绝望的时候找到这里!!现在用http request登录会返回400,不知道是不是少了这个header的原因。请问下这个js可以单独调用么?看到代码里好像有操作表单元素啊
你解决了吗,我用python调用,感觉多了位数,主要是参数 windwo和navigator这俩参数怎么定义的呢
请问window和navigator怎么定义呢,我使用python调用
请问window和navigator怎么定义呢,我使用python调用
import execjs
with open('dev.js', 'r') as f:
code = f.read()
code = 'var window = {};var navigator = {userAgent: "' + user_agent + '", language:"' + language + '"};' + code
ctx = execjs.compile(code)
client_id = ctx.call('r', False)
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
就在我快绝望的时候找到这里!!现在用http request登录会返回400,不知道是不是少了这个header的原因。请问下这个js可以单独调用么?看到代码里好像有操作表单元素啊