Simpan hasil ProxyHub MCP sebagai fail IP:Port
Baca respons JSON list_proxies, kendalikan ralat dan simpan fail proksi HTTP yang bersih sambil membezakan data daripada ujian langsung.
Untuk menghasilkan satu IP:port setiap baris daripada ProxyHub MCP, mulakan dengan respons JSON-RPC lengkap, bukan blok teks yang disalin daripada sembang.
- Panggil
list_proxiesmelalui klien MCP dengantypeditetapkan kepadahttp. - Simpan respons lengkap sebagai
mcp-response.json. - Simpan penukar yang menggunakan pustaka standard di bawah sebagai
mcp-to-file.pybersebelahan 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.