Untuk menghasilkan satu IP:port setiap baris daripada ProxyHub MCP, mulakan dengan respons JSON-RPC lengkap, bukan blok teks yang disalin daripada sembang.

  1. Panggil list_proxies melalui klien MCP dengan type ditetapkan kepada http.
  2. Simpan respons lengkap sebagai mcp-response.json.
  3. Simpan penukar yang menggunakan pustaka standard di bawah sebagai mcp-to-file.py bersebelahan respons itu.
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")

Jalankannya dalam direktori tersebut:

uv run --no-project python mcp-to-file.py

Periksa bilangan yang dicetak dan http-proxies.txt. Respons asal dikekalkan. Ralat JSON-RPC dan respons isError pada peringkat alat mencetuskan ralat; respons berjaya tanpa padanan menulis fail kosong dan melaporkan sifar. Had alat ialah sehingga 100 entri setiap panggilan, maka output mewakili pilihan yang dipulangkan itu, tidak semestinya keseluruhan senarai proksi HTTP.

Penukar hanya menerima baris yang dilaporkan sebagai http dan memeriksa sintaks IPv4 serta julat port, mengikut format IPv4 pengumpul semasa. Bagi protokol lain, kekalkan maklumat itu atau gunakan fail berasingan; fail IP:port bercampur yang ringkas tidak memberitahu klien penerima jabat tangan yang perlu digunakan.

Baris yang dieksport masih data. updated_at merekodkan masa kemas kini data tersimpan, bukan permintaan langsung daripada rangkaian anda. Uji titik akhir pilihan dengan permintaan proksi HTTP yang terhad ke destinasi yang diperlukan. Jika panggilan MCP gagal, siasat pengambilan data; jika permintaan kemudian melalui titik akhir yang dieksport gagal, siasat sambungan proksi berasingan itu.

Artikel berkaitan