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(); | 
        
      
            marlkiller
  
      
      
      commented 
        Oct 4, 2023 
      
    
  
  
    Sign up for free
    to join this conversation on GitHub.
    Already have an account?
    Sign in to comment