Lagre ProxyHub-MCP-resultater som en IP:Port-fil
Les JSON-svaret fra list_proxies, håndter feil og lagre en ren HTTP-proxyfil uten å blande data med direkte testing.
For å få én IP:port per linje fra ProxyHub MCP begynner du med hele JSON-RPC-svaret, ikke en tekstblokk kopiert fra en chat.
- Kall
list_proxiesgjennom MCP-klienten medtypesatt tilhttp. - Lagre hele svaret som
mcp-response.json. - Lagre konvertereren nedenfor, som bruker standardbiblioteket, som
mcp-to-file.pyved siden av svaret.
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")
Kjør den i den mappen:
uv run --no-project python mcp-to-file.py
Kontroller det utskrevne antallet og http-proxies.txt. Det opprinnelige svaret beholdes. JSON-RPC-feil og isError-svar på verktøynivå gir feil; et vellykket svar uten treff skriver en tom fil og rapporterer null. Verktøyet har en grense på opptil 100 poster per kall, så utdataene er det returnerte utvalget, ikke nødvendigvis hele HTTP-proxylisten.
Konvertereren godtar bare rader rapportert som http og sjekker IPv4-syntaks og portområde, i samsvar med IPv4-formatet til den nåværende innsamleren. For andre protokoller må du bevare den informasjonen eller bruke en egen fil; en enkel blandet IP:port-fil forteller ikke mottakerklienten hvilket håndtrykk den skal bruke.
En eksportert rad er fortsatt data. updated_at registrerer oppdateringstiden for lagrede data, ikke en direkte forespørsel fra nettverket ditt. Test valgte endepunkter med en begrenset HTTP-proxyforespørsel til målet du trenger. Mislyktes MCP-kallet, undersøk datahentingen; mislykkes en senere forespørsel via et eksportert endepunkt, undersøk den separate proxyforbindelsen.