jack 10 bulan lalu
induk
melakukan
6d3f80c8ad

+ 1 - 0
manual/clash/check_now_proxy.py

@@ -0,0 +1 @@
+# -*- coding: utf-8 -*-

+ 75 - 0
manual/clash/switch_proxy.py

@@ -0,0 +1,75 @@
+import httpx
+import time
+import json
+import uuid
+import logging
+import websockets
+from typing import Optional
+from websockets import WebSocketCommonProtocol
+
+# 配置日志
+logging.basicConfig(level=logging.INFO)
+
+# Clash API 的基础 URL
+CLASH_API_BASE_URL = "http://localhost:17888/api"
+
+# 服务的基础 URL 和端口
+SERVER_HOSTNAME = "proxy.wynd.network"
+SERVER_PORT = 4444
+SERVER_URL = f"wss://{SERVER_HOSTNAME}:{SERVER_PORT}/"
+TEST_USER_ID = '2pcRp86m1r76nSzdtGy1DNpXjrF'
+PROXY_URL = "http://127.0.0.1:17890"  # 代理地址
+
+
+def get_all_proxies():
+    """获取Clash中所有可用的代理"""
+    url = f"{CLASH_API_BASE_URL}/proxies"
+    try:
+        response = httpx.get(url)
+        response.raise_for_status()  # 检查请求是否成功
+        proxies = response.json()
+        logging.info("Available proxies:")
+        for proxy_name, proxy_info in proxies['proxies'].items():
+            logging.info(f"Name: {proxy_name}, Type: {proxy_info.get('type', 'Unknown')}")
+        return list(proxies['proxies'].keys())
+    except Exception as e:
+        logging.error(f"Failed to get proxies: {e}")
+        return []
+
+
+def switch_proxy(proxy_name):
+    """切换到指定的代理"""
+    url = f"{CLASH_API_BASE_URL}/proxies/GLOBAL"
+    data = {"name": proxy_name}
+    response = httpx.put(url, json=data)
+    if response.status_code == 204:
+        logging.info(f"Switched to proxy: {proxy_name}")
+    else:
+        logging.error(f"Failed to switch proxy: {response.status_code} - {proxy_name}")
+
+
+def main():
+    # 获取所有代理
+    proxies = get_all_proxies()
+    if proxies:
+        logging.info(f"Found {len(proxies)} proxies.")
+
+        ok_proxy_list = []
+
+        for proxy_name in proxies:
+            if proxy_name in ["DIRECT", "REJECT", "GLOBAL"]:
+                continue
+
+            # 切换到指定的代理
+            switch_proxy(proxy_name)
+            # 暂停一段时间,避免频繁切换
+            time.sleep(0.5)
+
+        for proxy_name in ok_proxy_list:
+            logging.info(f"Proxy {proxy_name} is OK.")
+    else:
+        logging.info("No proxies found. Exiting.")
+
+
+if __name__ == "__main__":
+    main()

+ 12 - 0
manual/grassio/account.txt

@@ -0,0 +1,12 @@
+28a3e1c1-3572-45a7-8c66-2843132af302
+2oL7nKR3rlHANh08znNYVNYgZXv
+2oWgZ1hCAD6u6fZjPcWsDJowo7Y
+2oWjwicrgUXjpUxtRNE7ufVSDxl
+2oWkFItRXDMW40AYKpDjGa3SJlw
+2oY2LqL7JDLSKZ8pScMqeGDXnV3
+2pT2P5xXpWgrlZa20ZlW4bdCsZT
+2pT2zNB1oYsMbb0okgnBvtTWYpZ
+2pT3nzb7IGEIRojfB2vypMgBcUw
+2pT49IOTlvXlr8AAqpPa08vBu5o
+2pT5tt43UBpk36v3Sf64KBAoQiR
+2pcRp86m1r76nSzdtGy1DNpXjrF

+ 12 - 0
manual/grassio/account_proxy.txt

@@ -0,0 +1,12 @@
+28a3e1c1-3572-45a7-8c66-2843132af302==socks5://47.79.34.67:60001
+2oL7nKR3rlHANh08znNYVNYgZXv==socks5://47.79.34.67:60002
+2oWgZ1hCAD6u6fZjPcWsDJowo7Y==socks5://47.79.34.67:60003
+2oWjwicrgUXjpUxtRNE7ufVSDxl==socks5://47.79.34.67:60004
+2oWkFItRXDMW40AYKpDjGa3SJlw==socks5://47.79.34.67:60005
+2oY2LqL7JDLSKZ8pScMqeGDXnV3==socks5://47.79.34.67:60006
+2pT2P5xXpWgrlZa20ZlW4bdCsZT==socks5://47.79.34.67:60007
+2pT2zNB1oYsMbb0okgnBvtTWYpZ==socks5://47.79.34.67:60008
+2pT3nzb7IGEIRojfB2vypMgBcUw==socks5://47.79.34.67:60009
+2pT49IOTlvXlr8AAqpPa08vBu5o==socks5://47.79.34.67:60010
+2pT5tt43UBpk36v3Sf64KBAoQiR==socks5://47.79.34.67:60011
+2pcRp86m1r76nSzdtGy1DNpXjrF==socks5://47.79.34.67:60012

+ 83 - 0
manual/grassio/check_grassio_proxy.py

@@ -0,0 +1,83 @@
+import httpx
+import time
+import json
+import uuid
+import logging
+import websockets
+from typing import Optional
+from websockets import WebSocketCommonProtocol
+
+# 配置日志
+logging.basicConfig(level=logging.INFO)
+
+# Clash API 的基础 URL
+CLASH_API_BASE_URL = "http://localhost:17888/api"
+
+# 服务的基础 URL 和端口
+SERVER_HOSTNAME = "proxy.wynd.network"
+SERVER_PORT = 4444
+SERVER_URL = f"wss://{SERVER_HOSTNAME}:{SERVER_PORT}/"
+TEST_USER_ID = '2pcRp86m1r76nSzdtGy1DNpXjrF'
+PROXY_URL = "http://127.0.0.1:17890"  # 代理地址
+
+
+def get_all_proxies():
+    """获取Clash中所有可用的代理"""
+    url = f"{CLASH_API_BASE_URL}/proxies"
+    try:
+        response = httpx.get(url)
+        response.raise_for_status()  # 检查请求是否成功
+        proxies = response.json()
+        logging.info("Available proxies:")
+        for proxy_name, proxy_info in proxies['proxies'].items():
+            logging.info(f"Name: {proxy_name}, Type: {proxy_info.get('type', 'Unknown')}")
+        return list(proxies['proxies'].keys())
+    except Exception as e:
+        logging.error(f"Failed to get proxies: {e}")
+        return []
+
+
+def switch_proxy(proxy_name):
+    """切换到指定的代理"""
+    url = f"{CLASH_API_BASE_URL}/proxies/GLOBAL"
+    data = {"name": proxy_name}
+    response = httpx.put(url, json=data)
+    if response.status_code == 204:
+        logging.info(f"Switched to proxy: {proxy_name}")
+    else:
+        logging.error(f"Failed to switch proxy: {response.status_code} - {proxy_name}")
+
+
+def test_grassio(proxy_name):
+    pass
+
+
+def main():
+    # 获取所有代理
+    proxies = get_all_proxies()
+    if proxies:
+        logging.info(f"Found {len(proxies)} proxies.")
+
+        ok_proxy_list = []
+
+        for proxy_name in proxies:
+            if proxy_name in ["DIRECT", "REJECT", "GLOBAL"]:
+                continue
+
+            # 切换到指定的代理
+            switch_proxy(proxy_name)
+            # 暂停一段时间,避免频繁切换
+            time.sleep(0.5)
+            # 测试通过代理连接 grassio 服务
+            result = test_grassio(proxy_name)
+            if result:
+                ok_proxy_list.append(proxy_name)
+
+        for proxy_name in ok_proxy_list:
+            logging.info(f"Proxy {proxy_name} is OK.")
+    else:
+        logging.info("No proxies found. Exiting.")
+
+
+if __name__ == "__main__":
+    main()

+ 28 - 0
utils/utils_call_free_al.py

@@ -0,0 +1,28 @@
+# -*- coding: utf-8 -*-
+
+from openai import OpenAI
+
+
+class FREEAI(object):
+    def call_ai(self, message):
+        try:
+            client = OpenAI(
+                api_key="sk-rM32T5VuyyCFyZGyEe006aEdFe6e4301A7627f7a3973Df17",
+                base_url="https://knox.chat/v1",
+            )
+
+            completion = client.chat.completions.create(
+                model="deepseek-ai/DeepSeek-R1-Distill-Llama-70B-free",
+                messages=[{"role": "user", "content": f"{message}"}],
+                temperature=0.3,
+            )
+
+            result = completion.choices[0].message.content
+
+            return result
+        except Exception as e:
+            print(e)
+
+# free = FREEAI()
+# chat = free.call_kimi('你好')
+# print(chat)