Salvar os resultados MCP do ProxyHub em um arquivo IP:Port
Leia a resposta JSON de list_proxies, trate erros e salve um arquivo limpo de proxies HTTP sem confundir dados com testes ao vivo.
Para produzir um IP:port por linha a partir do ProxyHub MCP, comece pela resposta JSON-RPC completa, não por um bloco de texto copiado do chat.
- Chame
list_proxiespelo cliente MCP comtypedefinido comohttp. - Salve a resposta completa como
mcp-response.json. - Salve o conversor abaixo, que usa a biblioteca padrão, como
mcp-to-file.pyao lado da resposta.
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")
Execute no mesmo diretório:
uv run --no-project python mcp-to-file.py
Confira a contagem impressa e http-proxies.txt. A resposta original é mantida. Erros JSON-RPC e respostas isError no nível da ferramenta geram erros; uma resposta bem-sucedida sem correspondências grava um arquivo vazio e informa zero. O limite da ferramenta é de até 100 entradas por chamada, então a saída representa aquela seleção retornada, não necessariamente toda a lista de proxies HTTP.
O conversor aceita apenas linhas informadas como http e verifica a sintaxe IPv4 e o intervalo da porta, de acordo com o formato IPv4 do coletor atual. Para outro protocolo, preserve essa informação ou use um arquivo separado; um arquivo IP:port misturado não informa ao cliente receptor qual handshake usar.
Uma linha exportada continua sendo um dado. updated_at registra a hora de atualização dos dados armazenados, não uma requisição ao vivo da sua rede. Teste os endpoints escolhidos com uma requisição limitada por proxy HTTP ao destino necessário. Se a chamada MCP falhou, investigue a obtenção dos dados; se uma requisição posterior por um endpoint exportado falhou, investigue essa conexão proxy separadamente.