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 requests
import 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_proxy
else:
logger.info("Test:Failed to switch proxy")
return False
def 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 True
else:
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 True
else:
logger.info("Online:Failed to switch proxy")
return False
if __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)