Salvare i risultati MCP di ProxyHub in un file IP:Port
Leggi la risposta JSON di list_proxies, gestisci gli errori e salva un file pulito di proxy HTTP, distinguendo i dati dalle verifiche in tempo reale.
Per produrre un IP:port per riga da ProxyHub MCP, parti dalla risposta JSON-RPC completa, non da un blocco di testo copiato dalla chat.
- Chiama
list_proxiestramite il client MCP contypeimpostato suhttp. - Salva la risposta completa come
mcp-response.json. - Salva il seguente convertitore, che usa la libreria standard, come
mcp-to-file.pyaccanto alla risposta.
import json
from ipaddress import IPv4Address
from pathlib import Path
reply = json.loads(
Path("mcp-response.json").read_text(encoding="utf-8")
)
if "error" in reply:
raise RuntimeError("MCP returned a JSON-RPC error")
result = reply["result"]
if result.get("isError"):
raise RuntimeError("The proxy tool reported an error")
data = result["structuredContent"]
endpoints = []
seen = set()
for row in data["proxies"]:
if row["type"] != "http":
continue
host = str(IPv4Address(row["ip"]))
port = row["port"]
if type(port) is not int or not 1 <= port <= 65535:
raise ValueError("Invalid proxy port")
endpoint = f"{host}:{port}"
if endpoint not in seen:
seen.add(endpoint)
endpoints.append(endpoint)
text = "\n".join(endpoints)
Path("http-proxies.txt").write_text(
text + ("\n" if text else ""),
encoding="utf-8",
)
print(f"Saved {len(endpoints)} HTTP endpoints")
Eseguilo in quella directory:
uv run --no-project python mcp-to-file.py
Controlla il conteggio stampato e http-proxies.txt. La risposta originale resta disponibile. Gli errori JSON-RPC e le risposte isError dello strumento generano errori; una risposta riuscita senza corrispondenze scrive un file vuoto e riporta zero. Il limite dello strumento è di 100 elementi per chiamata: l’output rappresenta la selezione restituita, non necessariamente l’intera lista di proxy HTTP.
Il convertitore accetta solo righe indicate come http e controlla sintassi IPv4 e intervallo della porta, coerentemente con il formato IPv4 del raccoglitore attuale. Per un altro protocollo, conserva l’informazione o usa un file separato; un semplice file IP:port misto non dice al client ricevente quale handshake usare.
Una riga esportata rimane un dato. updated_at registra l’ora di aggiornamento dei dati memorizzati, non una richiesta in tempo reale dalla tua rete. Prova gli endpoint scelti con una richiesta tramite proxy HTTP con limiti definiti verso la destinazione necessaria. Se è fallita la chiamata MCP, indaga sul recupero dei dati; se fallisce una successiva richiesta attraverso un endpoint esportato, indaga su quella connessione proxy distinta.