shawenguan há 1 ano atrás
pai
commit
7c8e912615
1 ficheiros alterados com 66 adições e 1 exclusões
  1. 66 1
      addons/utils/Utils.py

+ 66 - 1
addons/utils/Utils.py

@@ -1,9 +1,10 @@
 # -*- coding: utf-8 -*-
 import json
+import csv
 import base64
 import random
 import socket
-
+from datetime import datetime, timezone, timedelta
 
 def base64url_decode(base64_str):
     size = len(base64_str) % 4
@@ -36,3 +37,67 @@ def get_ip_address(domain):
         return socket.gethostbyname(domain)
     except socket.gaierror as e:
         print(f"无法解析域名 {domain}: {e}")
+
+def read_csv(filename='results.csv'):
+    data = []
+    try:
+        with open(filename, mode='r', encoding='utf-8') as csvfile:
+            reader = csv.DictReader(csvfile);
+            for row in reader:
+                data.append(row);
+    except IOError as e:
+        print(f"read_csv error occurred: {e}");
+    # print(data);
+    return data;
+
+def read_json(filename='results.json'):
+    data = None;
+    try:
+        with open(filename, 'r', encoding='utf-8') as file:
+            data = json.load(file);
+    except IOError as e:
+        print(f"read_json error occurred: {e}");
+    # print(data);
+    return data;
+
+def seconds_to_beijing_time(seconds):
+    utc_time  = datetime.fromtimestamp(seconds, tz=timezone.utc);
+    beijing_time = utc_time.astimezone(timezone(timedelta(hours=8)));
+    formatted_time = beijing_time.strftime('%Y-%m-%d %H:%M:%S');
+    return formatted_time;
+
+def parse_set_cookie(cookies_str):
+    """
+    解析HTTP响应头中的'Set-Cookie'字段,并返回一个cookie字典。
+    """
+    attrib_keys = ['Expires', 'Max-Age', 'Domain','Path','HttpOnly', 'SameSite'];
+    parts = cookies_str.split(';');
+    main_key = None;
+    ret_dict = {};
+    ret_data = [];
+    for pstr in parts:
+        pstr = pstr.strip();
+        a_key = None;
+        a_value = True;
+        if '=' in pstr:
+            a_key, a_value = pstr.split('=');
+            a_key = a_key.strip();
+            a_value = a_value.strip();
+        else:
+            a_key = pstr;
+        if a_key in attrib_keys:
+            ret_dict[main_key][a_key] = a_value;
+        else:
+            main_key = a_key;
+            attribs = {};
+            if ',' in main_key:
+                keys = main_key.split(',');
+                for k in keys:
+                    k = k.strip();
+                    if k in attrib_keys:
+                        attribs[k] = True;
+                    else:
+                        main_key = k;
+            ret_dict[main_key] = {'name': main_key, 'value':a_value, 'attribs':attribs};
+            ret_data.append(ret_dict[main_key]);
+    return ret_data;