shawenguan 1 år sedan
förälder
incheckning
aacbbc1f36
2 ändrade filer med 676 tillägg och 0 borttagningar
  1. 597 0
      Scripts/imaotai/imaotaiHelper.js
  2. 79 0
      Scripts/util/ToolKit.js

Filskillnaden har hållts tillbaka eftersom den är för stor
+ 597 - 0
Scripts/imaotai/imaotaiHelper.js


+ 79 - 0
Scripts/util/ToolKit.js

@@ -1117,5 +1117,84 @@ function ToolKit(scriptName, scriptId, options) {
                 'Connection': 'keep-alive'
             })
         }
+
+
+
+        shallowClone(obj) {
+            let clone = {};
+            for (let key in obj) {
+                if (obj.hasOwnProperty(key)) {
+                    clone[key] = obj[key];
+                }
+            }
+            return clone;
+        }
+
+        // 解析cookie字符串的函数
+        parseCookies(cookieString) {
+            let dict = {};
+            cookieString && cookieString.split(';').forEach(function(cookie) {
+                let parts = cookie.split('=');
+                dict[parts.shift().trim()] = decodeURI(parts.join('='));
+            });
+            return dict;
+        }
+
+        // 系列化为cookie字符串
+        serializeCookies(cookieData) {
+            const parts = [];
+            for(let key in cookieData){
+                let value = cookieData[key];
+                let cookiePart = `${encodeURIComponent(key)}=${encodeURIComponent(value)}`;
+                parts.push(cookiePart);
+            }
+            return parts.join('; ');
+        }
+
+        parseSetCookies(cookieString) {
+            const attribKeys = ['Expires', 'Max-Age', 'Domain', 'Path', 'HttpOnly', 'SameSite'];
+            const parts = cookieString.split(';');
+            let mainKey = null;
+            const retDict = {};
+            const retData = [];
+            parts.forEach(part => {
+                let pstr = part.trim();
+                let aKey = null;
+                let aValue = true;
+
+                if (pstr.includes('=')) {
+                    kvdata = pstr.split('=');
+                    aKey = kvdata[0].trim();
+                    aValue = kvdata[1].trim();
+                } else {
+                    aKey = pstr;
+                }
+
+                if (attribKeys.includes(aKey)) {
+                    if (retDict[mainKey]) {
+                        retDict[mainKey][aKey] = aValue;
+                        attribs = retDict[mainKey].attribs;
+                        attribs[aKey] = aValue;
+                    }
+                } else {
+                    mainKey = aKey;
+                    let attribs = {};
+                    if (mainKey.includes(',')) {
+                        const keys = mainKey.split(',');
+                        keys.forEach(key => {
+                            const k = key.trim();
+                            if (attribKeys.includes(k)) {
+                                attribs[k] = true;
+                            } else {
+                                mainKey = k;
+                            }
+                        });
+                    }
+                    retDict[mainKey] = { name: mainKey, value: aValue, attribs: attribs };
+                    retData.push(retDict[mainKey]);
+                }
+            });
+            return retData;
+        }
     })(scriptName, scriptId, options)
 }

Vissa filer visades inte eftersom för många filer har ändrats