An empty street
An empty house
A hole inside my heart
I’m all alone
The rooms are getting smaller
I wonder how
I wonder why
I wonder where they are
The days we had
The songs we sang together
Oh yeah
And oh, my love
I’m holding on forever
Reaching for a love that seems so far
🎵 Westlife《My Love》
import requestsimport time
from loguru import logger# LOCAL_IP = "127.0.0.1" # 本地IP地址,根据实际情况修改
LOCAL_IP = "233.233.233.233" # 远程IP地址,根据实际情况修改CLASH_API_URL_TEST = f"http://{LOCAL_IP}:9089" # Clash的API地址,根据实际情况修改
CLASH_API_URL_ONLINE = f"http://{LOCAL_IP}:9090" # Clash的API地址,根据实际情况修改URL_TEST = f"{CLASH_API_URL_TEST}/proxies/Proxy"
URL_ONLINE = f"{CLASH_API_URL_ONLINE}/proxies/Proxy"SWITCH_INTERVAL = 7 # 切换间隔时间,单位为秒PROXY_TEST = {"http": f"http://{LOCAL_IP}:7776", "https": f"http://{LOCAL_IP}:7776"}
PROXY_ONLINE = {"http": f"http://{LOCAL_IP}:7777", "https": f"http://{LOCAL_IP}:7777"}def switch_proxy_test():group_status = requests.get(URL_TEST).json()now = group_status["now"]all_proxies = group_status["all"]next_index = (all_proxies.index(now) + 1) % len(all_proxies)next_proxy = all_proxies[next_index]data = {"name": next_proxy}response = requests.put(URL_TEST, json=data)if response.status_code == 204:logger.info(f"Test:Successfully switched to next proxy: {next_proxy}")return next_proxyelse:logger.info("Test:Failed to switch proxy")return Falsedef check_proxy(check_url,proxy,remark=""):resp = requests.get(check_url, proxies=proxy)if resp.status_code == 200:logger.info(f"{remark}:Proxy is available: {resp.json()['origin']}")return Trueelse:logger.info(f"{remark}:Proxy is unavailable: {resp.status_code}")return False
def switch_proxy_online(next_proxy):data = {"name": next_proxy}response = requests.put(URL_ONLINE, json=data)if response.status_code == 204:logger.info(f"Online:Successfully switched to next proxy: {next_proxy}")return Trueelse:logger.info("Online:Failed to switch proxy")return Falseif __name__ == "__main__":check_url = "http://httpbin.org/ip"for _ in range(10):logger.info(f"SWITCH_INTERVAL:{SWITCH_INTERVAL}")if next_proxy:=switch_proxy_test():if is_ok := check_proxy(check_url,PROXY_TEST,"Test"):if switch_proxy_online(next_proxy):check_proxy(check_url,PROXY_ONLINE,"Online")time.sleep(SWITCH_INTERVAL)