|
@@ -0,0 +1,55 @@
|
|
|
+;(function(){
|
|
|
+ function initFTCookies () {
|
|
|
+ try {
|
|
|
+ // 已使用 obfuscateKey 加密 Key
|
|
|
+ var publicKey = `MIGBMA0DCSq0SIbiDQEVAQU3A4G3ADC3iQKPgQDwTNKoTnxMogaErZ746YQB0Xm50YkUBbn/pw9hG4yJXS3f3lY9prGkB7GLklV/+q6/x8lYPt8912JT/59Gf0P9j41cQN9hk7TsDAxjEkd3zG5NLn0ubdkN5X7hQxUpAcs/j+3nHdAThHboV+cBCYnBPVWNncGAqZQBsg33y6oGYwIGAQAf`
|
|
|
+
|
|
|
+ function obfuscateKey(key) {
|
|
|
+ const keyArray = Array.from(key)
|
|
|
+ const length = keyArray.length
|
|
|
+ const indices = []
|
|
|
+ for (let i = 3; i < length; i += 4) {
|
|
|
+ indices.push(i)
|
|
|
+ }
|
|
|
+
|
|
|
+ for (let i = 0; i < Math.floor(indices.length / 2); i++) {
|
|
|
+ const forwardIndex = indices[i]
|
|
|
+ const backwardIndex = indices[indices.length - 1 - i]
|
|
|
+ [keyArray[forwardIndex], keyArray[backwardIndex]] = [keyArray[backwardIndex], keyArray[forwardIndex]]
|
|
|
+ }
|
|
|
+
|
|
|
+ const obfuscatedKey = keyArray.join('')
|
|
|
+ return obfuscatedKey
|
|
|
+ }
|
|
|
+
|
|
|
+ function setCookie(name, value, days) {
|
|
|
+ var expires = ""
|
|
|
+
|
|
|
+ if (days) {
|
|
|
+ var date = new Date()
|
|
|
+ date.setTime(date.getTime() + (days * 24 * 60 * 60 * 1000))
|
|
|
+ expires = "; expires=" + date.toUTCString()
|
|
|
+ }
|
|
|
+
|
|
|
+ document.cookie = name + "=" + value + expires + "; path=/"
|
|
|
+ }
|
|
|
+
|
|
|
+ if (FingerprintJS) {
|
|
|
+ FingerprintJS.load().then(function (fp) {
|
|
|
+ fp.get().then(function (result) {
|
|
|
+ var visitorId = result.visitorId
|
|
|
+ setCookie('fid', visitorId, 30)
|
|
|
+
|
|
|
+ var encrypt = new JSEncrypt()
|
|
|
+ encrypt.setPublicKey(obfuscateKey(publicKey))
|
|
|
+ var encryptedFid = encrypt.encrypt(visitorId)
|
|
|
+ setCookie('eid', encryptedFid, 30)
|
|
|
+ })
|
|
|
+ })
|
|
|
+ }
|
|
|
+ } catch (e) {
|
|
|
+ console.warn(e)
|
|
|
+ }
|
|
|
+ }
|
|
|
+ window.addEventListener('load', initFTCookies)
|
|
|
+})();
|