利用clash restapi实现节点切换
- import random
- from utils importHttpUtil
- fromConfigimportConfig
- import json
- classProxyUtil:
- http =HttpUtil()
- def __init__(self):
- pass
- @staticmethod
- def get_proxies():
- res = json.loads(ProxyUtil.http.getString(Config.proxy_url +"/proxies"))
- # print(res)
- proxies = res["proxies"]
- print(proxies)
- return proxies
- pass
- @staticmethod
- def get_nodes():
- res = json.loads(ProxyUtil.http.getString(Config.proxy_url +"/proxies"))
- # print(res)
- proxies = res["proxies"]["Proxy"]["all"]
- print(proxies)
- return proxies
- pass
- @staticmethod
- def get_node(name):
- res = json.loads(ProxyUtil.http.getString(Config.proxy_url +"/proxies/"+ name))
- print(res)
- return res
- @staticmethod
- def switch_node():
- nodes =ProxyUtil.get_nodes()
- node = random.choice(nodes)
- data ={"name": node}
- res =ProxyUtil.http.put(Config.proxy_url +"/proxies/Proxy", data=data)
- print('switch to '+ node)
- return res
- pass
- #!/usr/bin/env python
- # -*- coding=utf-8 -*-
- # auth: bruce
- # date: 2022-06-22 13:42:26
- # Http2.py
- import json
- import random
- import requests
- from lxml import etree
- from Config import Config
- class HttpUtil:
- @staticmethod
- def get(url, params=None, headers=Config.headers):
- Config.headers["User-Agent"] = random.choice(Config.user_agents)
- try:
- page = requests.get(url, params=params, headers=headers, timeout=20, proxies=Config.proxies)
- res = etree.HTML(page.text)
- return res
- except Exception as e:
- print(e)
- return etree.HTML("<html></html>")
- @staticmethod
- def getString(url, params=None):
- Config.headers["User-Agent"] = random.choice(Config.user_agents)
- try:
- page = requests.get(url, params=params, headers=Config.headers, timeout=20, proxies=Config.proxies)
- res = page.text
- return res
- except Exception as e:
- print(e)
- return "<html></html>"
- @staticmethod
- def put(url, data):
- headers = {"Content-type": "application/json", "Accept": "text/plain"}
- payload = json.dumps(data)
- res = requests.put(url, data=payload, headers=headers)
- print(res.status_code)
- return res.status_code
- pass