| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879 |
- from nicegui import ui
- import httpx
- async def check_now_node(url_and_port):
- url = f"http://{url_and_port}"
- key = "/api/configs"
- full_url = url + key
- data = {"mode": "Global"}
- headers = {"Content-Type": "application/json"}
- async with httpx.AsyncClient() as client:
- try:
- response = await client.patch(full_url, json=data, headers=headers)
- if response.status_code != 204:
- raise Exception(f"请求失败: {response.status_code}")
- except httpx.HTTPError as exc:
- print(f"请求失败: {exc}")
- return None
- url_proxies = f"http://{url_and_port}/api/proxies"
- headers_proxies = {
- # 这里可以复用之前的headers
- "Accept": "application/json, text/plain, */*",
- "Host": url_and_port,
- # 其他可按需设置
- }
- try:
- response = await client.get(url_proxies, headers=headers_proxies)
- json_data = response.json()
- if not json_data or response.status_code != 200:
- print("JSON data is empty or request failed")
- return None
- proxies = json_data.get("proxies")
- proxy_global = proxies.get("GLOBAL")
- now_proxy = proxy_global.get("now")
- return now_proxy
- except httpx.RequestError as e:
- print(f"Request failed: {e}")
- return None
- async def handle_check_now_node():
- ip = '192.168.31.201'
- port_list = ['58001', '58002', '58003', '58004', '58005', '58006', '58007', '58008', '58009', '58010']
- results = []
- for port in port_list:
- url_and_port = f"{ip}:{port}"
- now_proxy = await check_now_node(url_and_port)
- results.append(f"{url_and_port}: \t{now_proxy}")
- msg = "\n".join(results)
- print(msg)
- dialog = ui.dialog()
- with dialog:
- ui.label(msg).classes("whitespace-pre-wrap text-left")
- dialog.props("max-width=700px")
- dialog.open()
- def handle_switch_node():
- print("Switch IP button clicked")
- def main():
- with ui.row().classes("mx-auto"):
- ui.button("Check Now Node", on_click=handle_check_now_node).classes("mt-1")
- ui.button("Switch Node", on_click=handle_switch_node).classes("mt-1")
- ui.label("Filter Node").classes("text-lg font-bold text-blue-500 mt-4")
- ui.input(value="JP").classes("w-96")
- ui.run(port=48345)
- if __name__ in {"__main__", "__mp_main__"}:
- main()
|