【Python】定时更换clashx工具

26 篇文章 0 订阅
24 篇文章 0 订阅

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)

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
要实现Python每天定时执行脚本的功能,常用的方式有两种:通过Windows创建定时任务和使用Jenkins进行定时执行。如果选择通过Windows创建定时任务执行,可以按照以下步骤操作: 1. 打开Windows任务计划程序,在任务计划程序库中创建一个新任务。 2. 在"常规"选项卡中,给任务取一个名称,并确保选择了与你的Python编译器相对应的操作系统架构。 3. 在"触发器"选项卡中,点击"新建"按钮,设置定时执行的时间和频率。 4. 在"操作"选项卡中,点击"新建"按钮,填写程序或脚本的名称,一般是python.exe。然后在"添加参数"文本框中填写你的Python程序的完整路径,例如:D:\software\unittest_demo\test.py。最后在"起始于"文本框中填写Python编译器的目录,例如:D:\software\python\python.exe。 5. 确认所有设置后,保存任务。 另外一种方式是通过Jenkins来定时执行Python脚本。Jenkins是一个开源的持续集成工具,可以用于自动化构建、测试和部署等任务。你可以按照以下步骤操作: 1. 安装Jenkins并启动服务。 2. 在Jenkins中创建一个新的任务。 3. 在任务的配置中,设置触发器来指定定时执行的时间和频率。 4. 在构建步骤中,添加一个"执行Windows批处理命令"或"执行Shell"的步骤,并填写Python程序的执行命令,例如:python D:\software\unittest_demo\test.py。 5. 保存并运行任务,Jenkins将会在指定的时间点自动执行Python脚本。 以上就是实现Python

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值