From 95e6d327b9c0ca12cd2fed1967687ecd618901c8 Mon Sep 17 00:00:00 2001 From: Dorae <86833913+Toperlock@users.noreply.github.com> Date: Fri, 20 Sep 2024 14:52:25 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E8=8E=B7=E5=8F=96=E9=93=BE?= =?UTF-8?q?=E6=8E=A5=E9=94=99=E8=AF=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- main.py | 20 ++++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) diff --git a/main.py b/main.py index 468f8c5..4d2ffee 100644 --- a/main.py +++ b/main.py @@ -6,22 +6,30 @@ import json import requests import yaml import ipaddress +from io import StringIO # 映射字典 -MAP_DICT = {'DOMAIN-SUFFIX': 'domain_suffix', 'HOST-SUFFIX': 'domain_suffix', 'DOMAIN': 'domain', 'HOST': 'domain', 'host': 'domain', +MAP_DICT = {'DOMAIN-SUFFIX': 'domain_suffix', 'HOST-SUFFIX': 'domain_suffix', 'host-suffix': 'domain_suffix', 'DOMAIN': 'domain', 'HOST': 'domain', 'host': 'domain', 'DOMAIN-KEYWORD':'domain_keyword', 'HOST-KEYWORD': 'domain_keyword', 'host-keyword': 'domain_keyword', 'IP-CIDR': 'ip_cidr', 'ip-cidr': 'ip_cidr', 'IP-CIDR6': 'ip_cidr', 'IP6-CIDR': 'ip_cidr','SRC-IP-CIDR': 'source_ip_cidr', 'GEOIP': 'geoip', 'DST-PORT': 'port', 'SRC-PORT': 'source_port', "URL-REGEX": "domain_regex", "DOMAIN-REGEX": "domain_regex"} def read_yaml_from_url(url): - response = requests.get(url) + headers = {'User-Agent': 'Mozilla/5.0'} + response = requests.get(url, headers=headers) response.raise_for_status() yaml_data = yaml.safe_load(response.text) return yaml_data def read_list_from_url(url): - df = pd.read_csv(url, header=None, names=['pattern', 'address', 'other', 'other2', 'other3']) + headers = {'User-Agent': 'Mozilla/5.0'} + response = requests.get(url, headers=headers) + if response.status_code == 200: + csv_data = StringIO(response.text) + df = pd.read_csv(csv_data, header=None, names=['pattern', 'address', 'other', 'other2', 'other3'], on_bad_lines='skip') + else: + return None filtered_rows = [] rules = [] # 处理逻辑规则 @@ -90,7 +98,7 @@ def parse_and_convert_to_dataframe(link): pattern = 'DOMAIN' else: pattern, address = item.split(',', 1) - if pattern == "IP-CIDR" and "no-resolve" in address: + if ',' in address: address = address.split(',', 1)[0] rows.append({'pattern': pattern.strip(), 'address': address.strip(), 'other': None}) df = pd.DataFrame(rows, columns=['pattern', 'address', 'other']) @@ -157,8 +165,8 @@ def parse_list_file(link, output_directory): srs_path = file_name.replace(".json", ".srs") os.system(f"sing-box rule-set compile --output {srs_path} {file_name}") return file_name - except: - print(f'获取链接出错,已跳过:{link}') + except Exception as e: + print(f'获取链接出错,已跳过:{link},原因:{str(e)}') pass # 读取 links.txt 中的每个链接并生成对应的 JSON 文件