บันทึกผล ProxyHub MCP เป็นไฟล์ IP:Port
อ่านคำตอบ JSON ของ list_proxies จัดการข้อผิดพลาด และบันทึกไฟล์ HTTP พร็อกซีที่สะอาด โดยแยกข้อมูลออกจากการตรวจใช้งานจริง
ถ้าต้องการสร้างรายการจาก ProxyHub MCP แบบหนึ่ง IP:port ต่อบรรทัด ให้เริ่มจากคำตอบ JSON-RPC ทั้งชุด ไม่ใช่บล็อกข้อความที่คัดลอกจากแชต
- เรียก
list_proxiesผ่านไคลเอนต์ MCP โดยตั้งtypeเป็นhttp - บันทึกคำตอบทั้งหมดเป็น
mcp-response.json - บันทึกตัวแปลงที่ใช้ไลบรารีมาตรฐานด้านล่างเป็น
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 ล้มเหลว ให้ตรวจการดึงข้อมูล แต่ถ้าคำขอภายหลังผ่านจุดที่ส่งออกมาล้มเหลว ให้ตรวจการเชื่อมต่อพร็อกซีครั้งนั้นแยกต่างหาก