From 671d144c808b155e5e2d3659e042cefb7637bf1f Mon Sep 17 00:00:00 2001 From: wumode Date: Mon, 7 Apr 2025 00:40:38 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20trackers=E5=8A=A0=E8=BD=BD=E9=94=99?= =?UTF-8?q?=E8=AF=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- package.v2.json | 3 ++- plugins.v2/tobypasstrackers/__init__.py | 26 +++++++++++---------- plugins.v2/tobypasstrackers/sites/trackers | Bin 938 -> 1576 bytes 3 files changed, 16 insertions(+), 13 deletions(-) diff --git a/package.v2.json b/package.v2.json index 5bd8c14..7938688 100644 --- a/package.v2.json +++ b/package.v2.json @@ -405,7 +405,8 @@ "level": 2, "history": { "v1.0": "支持自定义Trackers", - "v1.1": "更新列表后发送通知" + "v1.1": "更新列表后发送通知", + "v1.2": "修复trackers加载错误" } } } diff --git a/plugins.v2/tobypasstrackers/__init__.py b/plugins.v2/tobypasstrackers/__init__.py index 78d61a0..4243060 100644 --- a/plugins.v2/tobypasstrackers/__init__.py +++ b/plugins.v2/tobypasstrackers/__init__.py @@ -1,6 +1,5 @@ from typing import Any, List, Dict, Tuple, Optional from datetime import datetime, timedelta -import pickle import ipaddress import socket @@ -8,6 +7,8 @@ from apscheduler.schedulers.background import BackgroundScheduler from fastapi import Response from apscheduler.triggers.cron import CronTrigger import pytz +import base64 +import json from app.chain.site import SiteChain from app.core.config import settings @@ -29,7 +30,7 @@ class ToBypassTrackers(_PluginBase): # 插件图标 plugin_icon = "Clash_A.png" # 插件版本 - plugin_version = "1.1" + plugin_version = "1.2" # 插件作者 plugin_author = "wumode" # 作者主页 @@ -74,11 +75,12 @@ class ToBypassTrackers(_PluginBase): self.stop_service() self.siteoper = SiteOper() self.trackers = {} - self.ipv6_txt = self.get_data('ipv6_txt') if self.get_data('ipv6_txt') else "" - self.ipv4_txt = self.get_data('ipv4_txt') if self.get_data('ipv4_txt') else "" + self.ipv6_txt = self.get_data("ipv6_txt") if self.get_data("ipv6_txt") else "" + self.ipv4_txt = self.get_data("ipv4_txt") if self.get_data("ipv4_txt") else "" try: - with open(f"{settings.ROOT_PATH}/app/plugins/tobypasstrackers/sites/trackers", "rb") as f: - self.trackers = pickle.load(f) + with open(f"{settings.ROOT_PATH}/app/plugins/tobypasstrackers/sites/trackers", "r", encoding="utf-8") as f: + base64_str = f.read() + self.trackers = json.loads(base64.b64decode(base64_str).decode("utf-8")) except Exception as e: logger.error(f"插件加载错误:{e}") # 配置 @@ -103,7 +105,7 @@ class ToBypassTrackers(_PluginBase): self._scheduler = BackgroundScheduler(timezone=settings.TZ) if self._onlyonce: logger.info(f"立即运行一次") - self._scheduler.add_job(self.update_ips, 'date', + self._scheduler.add_job(self.update_ips, "date", run_date=datetime.now( tz=pytz.timezone(settings.TZ)) + timedelta(seconds=3) ) @@ -573,8 +575,8 @@ class ToBypassTrackers(_PluginBase): return [str(sub_net) for sub_net in remaining_ranges] # replacing = data.get('replace') - chnroute6_lists_url = 'https://ispip.clang.cn/all_cn_ipv6.txt' - chnroute_lists_url = 'https://ispip.clang.cn/all_cn.txt' + chnroute6_lists_url = "https://ispip.clang.cn/all_cn_ipv6.txt" + chnroute_lists_url = "https://ispip.clang.cn/all_cn.txt" ipv6_list = [] ip_list = [] domains = [] @@ -623,7 +625,7 @@ class ToBypassTrackers(_PluginBase): domains.append(custom_tracker) for domain in domains: if self._bypass_ipv6: - ipv6_addresses = DnsHelper.query_domain(domain, self._dns_input, 'AAAA') + ipv6_addresses = DnsHelper.query_domain(domain, self._dns_input, "AAAA") if ipv6_addresses is None: logger.warn(f"{domain} AAAA 记录查询失败") failed_msg.append(f"【{domain_name_map.get(domain, domain)}】 {domain}: AAAA记录查询失败") @@ -685,7 +687,7 @@ class ToBypassTrackers(_PluginBase): ip_list.pop(index) length = int(ip_larger.split('/')[1]) if length < 12: - remaining_ip = __exclude_ip_range(ip_larger, f'{ip}/{length + 8}') + remaining_ip = __exclude_ip_range(ip_larger, f"{ip}/{length + 8}") ip_list.extend(remaining_ip) for ip in exempted_ipv6: index = __search_ip(ip, ipv6_list) @@ -695,7 +697,7 @@ class ToBypassTrackers(_PluginBase): ipv6_list.pop(index) length = int(ip_larger.split('/')[1]) if length < 32: - remaining_ip = __exclude_ip_range(ip_larger, f'{ip}/{min(32, length + 8)}') + remaining_ip = __exclude_ip_range(ip_larger, f"{ip}/{min(32, length + 8)}") ipv6_list.extend(remaining_ip) self.ipv4_txt = "\n".join(ip_list) self.ipv6_txt = "\n".join(ipv6_list) diff --git a/plugins.v2/tobypasstrackers/sites/trackers b/plugins.v2/tobypasstrackers/sites/trackers index 94bfabc2552c7a5265d47379daad8d61e90fd58e..8cb19fff38bd19bba316465d4acec20c3e1eba69 100644 GIT binary patch literal 1576 zcmZux%W|tY5d9?((XH#nEMm{_D$G=%f{=Cyxh`M{sMxY2fBiIw*d(5%yXB_)ybdNF zSdd+K5aUFp7oJDIBLCEi9sW^|MY4NsMKHQ`_@=oR_fa?eAtrWe<#!b-Oj2%Lsy;_* zuv7KL6=qy&Rkvk+{SzrXQZ&~zE8p6G+bxfJ;R%CvMN&D>RD}~s=M?Q?!@c5G<@i@s zzS_5{8AZ5t?2dMqI?M)+T$v~=#m?^iy=LE4LFQCsdbcsm*mvJ+_8lYsO$4IhM-P=S-!fd-#Q|Y_uA^Fs|d64KF8j4PRdMD;%JKY%l(<5B>iAzqiv-`;n5sl zYxTRG`3>WSqO+`9{8j>`Vfw--?1kPa}akIF^k_SHC|NW1?*BAUb!efQ} zBP-L9p%*R4>6r(z0X?1@7J&YU&`Do>%yU)NKz#(QkBM?GT*(hgG6{J1yv1&1qDi+6 z)Ikrf=EenVGkI8J2fNn@-Wb3$EZPM>&`R1;@*6n%bZKk36T!x*f}-ca#vF1y-hKJt z2e8WqM#Krc2;PQRHw-yLc)rj?vZhBexl_!oM8_-67%bCYLBiwp| zEVuxk9W`IxmCg_S4po``&?ICKN+An2po8=zNVMEB<;8Q)=23H`CEzjb|KQ@0WuU!p zeXF5c9mbPqZh~OwA2pvc%jV#PcU0Hj)=a*sy+Tiz+ibG89F#lnO_vOM{I-3H{Mo~+ znX7%$rk*@MXWfDgNxOabYJl(ApEiFUxdB*y^vWS(qBGgMq>`HLrAMhJEOl)s#lGwo?Dp?7MAK+v5%wJ`k z#%W7)^Lz90X6EJ3i>JTOpAFydeiP@Cb5j=`Fw^wk`*`W$7{NI6KSJxl*fP<#-Xg1n z-L|2q6@vqb@wHY=P^cC@gKtY5HMD+$NJF#r0vlkAG;HGaI1e1)GfbIY#M$S2>gJRe zlqcVlnx9ISI~*rSwbr@To`KeyKHi*yW4MT~B(J&}luoNy<)8_~IJZa*9wc~^)+Ij- zD|tZe@=89^G_9}83~b^BJ)v~8dn;<}KHb3xh`4NwRuyvLRH-3U!}RZR-~Y*Y%TZN| zB)}Q9Moo9wYO__Ei(kV5MVzFkZ{R3o>tTWC|XDrOnE(bSPCDvZ~S9;%{>9 zfnYt#1%)q2b>SV8#?*O~xT2$-f+SdSBz;rNRPz|exN@zfE4rX*p!{Rp82ts#2#hZu Nn`Dn