برای تولید یک IP:port در هر خط از ProxyHub MCP، از پاسخ کامل JSON-RPC شروع کنید، نه بلوک متنی کپی‌شده از گفتگو.

  1. از طریق کلاینت MCP، list_proxies را فراخوانی کنید و type را روی http بگذارید.
  2. پاسخ کامل را با نام mcp-response.json ذخیره کنید.
  3. مبدل زیر را که از کتابخانه استاندارد استفاده می‌کند، با نام mcp-to-file.py کنار پاسخ ذخیره کنید.
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")

آن را در همان پوشه اجرا کنید:

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

تعداد چاپ‌شده و http-proxies.txt را بررسی کنید. پاسخ اصلی باقی می‌ماند. خطاهای JSON-RPC و پاسخ‌های isError در سطح ابزار خطا ایجاد می‌کنند؛ پاسخ موفق بدون مورد منطبق، فایل خالی می‌نویسد و صفر گزارش می‌دهد. حد ابزار تا 100 مورد در هر فراخوانی است، پس خروجی همان انتخاب بازگردانده‌شده است، نه لزوماً کل فهرست پروکسی HTTP.

مبدل فقط ردیف‌های گزارش‌شده با نوع http را می‌پذیرد و ساختار IPv4 و محدوده پورت را مطابق قالب IPv4 گردآورنده فعلی بررسی می‌کند. برای پروتکل دیگر، این اطلاعات را نگه دارید یا فایل جدا بسازید؛ فایل ساده IP:port مخلوط به کلاینت دریافت‌کننده نمی‌گوید از کدام دست‌دهی استفاده کند.

ردیف صادرشده هنوز داده است. updated_at زمان به‌روزرسانی داده ذخیره‌شده را ثبت می‌کند، نه درخواست زنده از شبکه شما. نقاط انتخابی را با درخواست محدود از طریق پروکسی HTTP به مقصد موردنیاز آزمایش کنید. اگر فراخوانی MCP شکست خورد، دریافت داده را بررسی کنید؛ اگر درخواست بعدی از طریق نقطه صادرشده شکست خورد، همان اتصال پروکسی جداگانه را بررسی کنید.

مقالات مرتبط