当前位置: 首页 > news >正文

【Python】定时更换clashx工具


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)
http://www.lryc.cn/news/326516.html

相关文章:

  • 2024年第16届大广赛新命题发布-爱华仕箱包
  • 前端理论总结(js)——闭包和内存泄漏
  • PHP页面如何实现设置独立访问密码
  • M1 mac安装 Parallels Desktop 18 激活
  • 嵌入式学习46——硬件相关2串口通信
  • 企业产品网络安全建设日志3月20
  • BRICK POP展示了有趣的链上游戏玩法与奖励
  • jetcache 2级缓存模式实现批量清除
  • 【MD】激光驱动原子动力学的全尺寸从头算模拟
  • 访问者模式(数据与行为解耦)
  • LeetCode:1319. 连通网络的操作次数(并查集 Java)
  • C++ STL教程
  • 系列学习前端之第 6 章:一文掌握 jQuery(熟悉即可)
  • python 中判断文件、目录是否存在的方法
  • Redis的安装与启动
  • WebGIS航线编辑器(无人机航线规划)
  • STEP 格式三维模型读取
  • Mora: Enabling Generalist Video Generation via A Multi-Agent Framework
  • [c++] 自写 MyString 类
  • 三、阅读器开发--4、阅读器目录、全文搜索功能开发
  • AMEYA360代理 | 江苏长晶科技FST2.0高性能 IGBT产品介绍
  • 基于springboot+vue+Mysql的网上图书商城
  • 阿里云服务器多少钱一个月?低至5元1个月
  • LeetCode第五天(442. 数组中重复的数据)
  • chatgpt正面案例合集
  • 今日讲讲路由配置
  • 【Rust】Shared-State Concurrency
  • 连接数据库(MySQL)的JDBC
  • golang通过参数控制HTTP server是否使用基本认证
  • javaSwing坦克大战游戏