分类目录

链接

2022 年 7 月
 123
45678910
11121314151617
18192021222324
25262728293031

近期文章

热门标签

新人福利,免费薅羊毛

现在位置:    首页 > Python > 正文
利用clash restapi实现节点切换
Python 暂无评论 阅读(400)
  1. import random
  2. from utils importHttpUtil
  3. fromConfigimportConfig
  4. import json
  5. classProxyUtil:
  6.     http =HttpUtil()
  7. def __init__(self):
  8. pass
  9. @staticmethod
  10. def get_proxies():
  11.         res = json.loads(ProxyUtil.http.getString(Config.proxy_url +"/proxies"))
  12. # print(res)
  13.         proxies = res["proxies"]
  14. print(proxies)
  15. return proxies
  16. pass
  17. @staticmethod
  18. def get_nodes():
  19.         res = json.loads(ProxyUtil.http.getString(Config.proxy_url +"/proxies"))
  20. # print(res)
  21.         proxies = res["proxies"]["Proxy"]["all"]
  22. print(proxies)
  23. return proxies
  24. pass
  25. @staticmethod
  26. def get_node(name):
  27.         res = json.loads(ProxyUtil.http.getString(Config.proxy_url +"/proxies/"+ name))
  28. print(res)
  29. return res
  30. @staticmethod
  31. def switch_node():
  32.         nodes =ProxyUtil.get_nodes()
  33.         node = random.choice(nodes)
  34.         data ={"name": node}
  35.         res =ProxyUtil.http.put(Config.proxy_url +"/proxies/Proxy", data=data)
  36. print('switch to '+ node)
  37. return res
  38. pass
  1. #!/usr/bin/env python
  2. # -*- coding=utf-8 -*-
  3. # auth: bruce
  4. # date: 2022-06-22 13:42:26
  5. # Http2.py
  6. import json
  7. import random
  8. import requests
  9. from lxml import etree
  10. from Config import Config
  11.  
  12.  
  13. class HttpUtil:
  14.  
  15.     @staticmethod
  16.     def get(url, params=None, headers=Config.headers):
  17.         Config.headers["User-Agent"] = random.choice(Config.user_agents)
  18.  
  19.         try:
  20.             page = requests.get(url, params=params, headers=headers, timeout=20, proxies=Config.proxies)
  21.             res = etree.HTML(page.text)
  22.             return res
  23.         except Exception as e:
  24.             print(e)
  25.             return etree.HTML("<html></html>")
  26.  
  27.     @staticmethod
  28.     def getString(url, params=None):
  29.         Config.headers["User-Agent"] = random.choice(Config.user_agents)
  30.  
  31.         try:
  32.             page = requests.get(url, params=params, headers=Config.headers, timeout=20, proxies=Config.proxies)
  33.             res = page.text
  34.             return res
  35.         except Exception as e:
  36.             print(e)
  37.             return "<html></html>"
  38.  
  39.     @staticmethod
  40.     def put(url, data):
  41.         headers = {"Content-type": "application/json", "Accept": "text/plain"}
  42.         payload = json.dumps(data)
  43.         res = requests.put(url, data=payload, headers=headers)
  44.         print(res.status_code)
  45.         return res.status_code
  46.         pass

============ 欢迎各位老板打赏~ ===========

本文版权归Bruce's Blog所有,转载引用请完整注明以下信息:
本文作者:Bruce
本文地址:利用clash restapi实现节点切换 | Bruce's Blog

发表评论

留言无头像?