Skip to content
Intermediate / 3 min read

چگونه یک بررسی‌کننده پروکسی IPRoyal برای HTTP، SOCKS5 و Shadowsocks بسازیم

بیاموزید چگونه پروکسی‌های IPRoyal را با یک اسکریپت پایتون سفارشی تأیید کنید. نقاط پایانی HTTP، SOCKS5 و Shadowsocks را از نظر اتصال، تأخیر و ناشناس‌بودن IP بررسی کنید.

SOCKS5 وب اسکرپینگ حریم خصوصی/ناشناسی سایر

مرور کلی

IPRoyal پروکسی‌های مسکونی، دیتاسنتر و ISP را با پشتیبانی از پروتکل‌های HTTP، SOCKS5 و Shadowsocks ارائه می‌دهد. چه در حال اسکرپینگ، پایش نتایج جستجو یا مرور خصوصی باشید، باید بدانید که پروکسی‌های شما فعال، سریع و بدون نشت IP واقعی‌تان هستند. بررسی دستی هر نقطه پایانی مقیاس‌پذیر نیست. این آموزش به شما نشان می‌دهد چگونه یک بررسی‌کننده پروکسی قابل استفاده مجدد در پایتون بسازید که اتصال را آزمایش می‌کند، تأخیر را اندازه‌گیری می‌کند و ناشناس‌بودن را برای هر نقطه پایانی IPRoyal تأیید می‌کند.

پیش‌نیازها

  • پایتون 3.8 یا جدیدتر روی سیستم شما نصب باشد.
  • مدیر بسته pip.
  • اطلاعات ورود پروکسی IPRoyal (هاست، پورت، نام کاربری، رمز عبور). می‌توانید این‌ها را از داشبورد IPRoyal کپی کنید.
  • برای تست Shadowsocks: یک کلاینت Shadowsocks مانند shadowsocks-libev (لینوکس/مک‌اواس) یا shadowsocks-rust.
  • آشنایی پایه با خط فرمان و پایتون.

درک اینکه چه چیزی را بررسی کنیم

یک بررسی‌کننده پروکسی مفید باید به چهار پرسش پاسخ دهد:

  • اتصال: آیا پروکسی می‌تواند به اینترنت عمومی دسترسی پیدا کند؟
  • ناشناس‌بودن: آیا IP خروجی که یک سرویس برمی‌گرداند با IP پروکسی مطابقت دارد (نه IP واقعی شما)؟
  • تأخیر: یک درخواست از شروع تا پایان چقدر طول می‌کشد؟
  • رفتار DNS: آیا درخواست‌های DNS از طریق پروکسی یا به‌صورت محلی حل می‌شوند؟ (نشت مکان واقعی شما را آشکار می‌کند.)

پروتکل‌های مختلف نیاز به مدیریت کمی متفاوت دارند. جدول زیر رویکرد هر پروتکل IPRoyal را خلاصه می‌کند.

پروتکل طرح‌واره پایتون مدیریت DNS احراز هویت
HTTP http:// محلی یا پروکسی نام کاربری/رمز عبور در URL یا هدر
HTTPS http:// (CONNECT) محلی یا پروکسی نام کاربری/رمز عبور در URL یا هدر
SOCKS5 socks5h:// راه دور (پروکسی) نام کاربری/رمز عبور در URL
Shadowsocks SOCKS5 محلی پس از ss-local راه دور رمز عبور در پیکربندی

مراحل

۱. نصب وابستگی‌های پایتون

کتابخانه requests پروکسی‌های HTTP و HTTPS را مدیریت می‌کند. برای SOCKS5، به requests[socks] و pysocks نیز نیاز دارید.

pip install requests requests[socks] pysocks

۲. جمع‌آوری نقاط پایانی پروکسی IPRoyal

وارد داشبورد IPRoyal شوید و فهرست پروکسی را کپی کنید. بیشتر فهرست‌ها شامل خطوطی با قالب زیر هستند:

host:port:username:password

فهرست را در یک فایل متنی ساده ذخیره کنید، مثلاً proxies.txt. اگر از قالب دیگری استفاده می‌کنید، کد تجزیه را در مراحل بعدی تنظیم کنید.

۳. نوشتن یک بررسی‌کننده پایه پروکسی HTTP

فایلی به نام checker.py ایجاد کنید. قطعه کد زیر یک پروکسی HTTP واحد را آزمایش می‌کند و IP برگشتی را چاپ می‌کند.

import requests
from requests.exceptions import ProxyError, ConnectTimeout

proxy_url = "http://username:password@host:port"
proxies = {
    "http": proxy_url,
    "https": proxy_url,
}

try:
    response = requests.get("https://httpbin.org/ip", proxies=proxies, timeout=10)
    response.raise_for_status()
    print("Proxy works. Your IP appears as:", response.json()["origin"])
except (ProxyError, ConnectTimeout) as e:
    print("Proxy failed:", e)

username، password، host و port را با اطلاعات ورود IPRoyal خود جایگزین کنید.

۴. گسترش بررسی‌کننده به SOCKS5

برای SOCKS5، طرح‌واره را به socks5h:// تغییر دهید. حرف h به requests می‌گوید که DNS را از طریق پروکسی حل کند، که از نشت DNS جلوگیری می‌کند.

proxy_url = "socks5h://username:password@host:port"
proxies = {
    "http": proxy_url,
    "https": proxy_url,
}

همان بلوک درخواست را اجرا کنید. اگر خطای Missing dependencies for SOCKS support را دیدید، requests[socks] را دوباره نصب کنید.

۵. افزودن اندازه‌گیری تأخیر و تأیید IP

اسکریپت را طوری تغییر دهید که زمان درخواست را اندازه‌گیری کند و IP برگشتی را با IP پروکسی مورد انتظار مقایسه کند. می‌توانید IP مورد انتظار را در فهرست پروکسی خود ذخیره کنید یا آن را جداگانه واکشی کنید.

import time

start = time.time()
response = requests.get("https://httpbin.org/ip", proxies=proxies, timeout=10)
elapsed = time.time() - start
returned_ip = response.json()["origin"]
print(f"Latency: {elapsed:.2f}s, Returned IP: {returned_ip}")

اگر IP برگشتی با IP واقعی شما مطابقت دارد، پروکسی ترافیک شما را ناشناس نمی‌کند. تنظیمات احراز هویت و پروتکل خود را بررسی کنید.

۶. آزمایش نقاط پایانی Shadowsocks

Shadowsocks یک تونل است، نه یک پروتکل پروکسی مستقیم. برای بررسی یک نقطه پایانی Shadowsocks IPRoyal، یک کلاینت محلی Shadowsocks اجرا کنید که یک پروکسی SOCKS5 ارائه می‌دهد، سپس آن آدرس SOCKS5 محلی را آزمایش کنید.

shadowsocks-libev را روی لینوکس یا مک‌اواس (از طریق Homebrew) نصب کنید. سپس یک فایل پیکربندی ss-local.json ایجاد کنید:

{
  "server": "your_iproyal_ss_server",
  "server_port": 8388,
  "local_address": "127.0.0.1",
  "local_port": 1080,
  "password": "your_password",
  "method": "aes-256-gcm"
}

کلاینت را شروع کنید:

ss-local -c ss-local.json

اکنون socks5h://127.0.0.1:1080 را به‌عنوان پروکسی خود در اسکریپت بررسی‌کننده در نظر بگیرید. اگر اتصال کار کند، تونل Shadowsocks درست کار می‌کند.

۷. ساخت یک بررسی‌کننده دسته‌ای با چرخش و ثبت وقایع

برای چندین پروکسی، فایل proxies.txt خود را تجزیه کنید، روی هر نقطه پایانی حلقه بزنید و نتایج را در یک فایل CSV ثبت کنید. این به شما کمک می‌کند IPهای مرده را شناسایی کنید و عملکرد را در طول زمان پیگیری کنید.

import csv

with open("proxies.txt") as f:
    lines = [line.strip() for line in f if line.strip()]

results = []
for line in lines:
    host, port, user, pwd = line.split(":")
    proxy_url = f"socks5h://{user}:{pwd}@{host}:{port}"
    proxies = {"http": proxy_url, "https": proxy_url}
    try:
        start = time.time()
        r = requests.get("https://httpbin.org/ip", proxies=proxies, timeout=10)
        elapsed = time.time() - start
        ip = r.json()["origin"]
        results.append((host, port, "OK", f"{elapsed:.2f}", ip))
    except Exception as e:
        results.append((host, port, "FAIL", "", str(e)))

with open("proxy_report.csv", "w", newline="") as f:
    writer = csv.writer(f)
    writer.writerow(["Host", "Port", "Status", "Latency(s)", "Returned IP/Error"])
    writer.writerows(results)

اسکریپت را به‌صورت دوره‌ای اجرا کنید تا یک استخر پروکسی سالم را حفظ کنید.

عیب‌یابی

  • 407 Proxy Authentication Required: نام کاربری و رمز عبور را تأیید کنید. اگر رمز عبور شما شامل کاراکترهای خاصی مانند @ یا : است، آن‌ها را URL-encode کنید (مثلاً @ به %40 تبدیل می‌شود).
  • مهلت اتصال (timeout): بررسی کنید که هاست و پورت درست باشند و اینکه IP شما در داشبورد IPRoyal در صورت نیاز طرح‌تان در لیست سفید قرار گرفته باشد.
  • خطاهای SOCKS5: اطمینان حاصل کنید که requests[socks] نصب شده است. برای حل DNS از راه دور از socks5h:// استفاده کنید؛ socks5:// DNS را به‌صورت محلی حل می‌کند.
  • کلاینت Shadowsocks شروع نمی‌شود: تأیید کنید که روش رمزنگاری با پیکربندی IPRoyal شما مطابقت دارد و پورت سرور باز است. با ss-local -c ss-local.json -v برای خروجی verbose آزمایش کنید.
  • نشت DNS: از socks5h:// استفاده کنید و با یک سرویس تست نشت DNS از طریق پروکسی آزمایش کنید. اگر مکان resolver با مکان پروکسی متفاوت است، DNS نشت می‌کند.
  • خطاهای گواهی HTTPS: برخی پروکسی‌ها TLS را رهگیری می‌کنند. برای اسکرپینگ، پروکسی‌های مسکونی یا ISP را ترجیح دهید که از HTTPS سرتاسری بدون رهگیری پشتیبانی می‌کنند.

خلاصه

شما یک بررسی‌کننده پروکسی مبتنی بر پایتون ساخته‌اید که نقاط پایانی HTTP، SOCKS5 و Shadowsocks را از IPRoyal اعتبارسنجی می‌کند. این اسکریپت تأخیر را اندازه‌گیری می‌کند، IP خروجی را تأیید می‌کند و نتایج را برای تحلیل دسته‌ای ثبت می‌کند. بررسی‌های منظم به شما کمک می‌کند پروکسی‌های مرده را کنار بگذارید و گردش‌کارهای قابل اعتماد اسکرپینگ یا حریم خصوصی را حفظ کنید. پشتیبانی گسترده IPRoyal از پروتکل‌ها آن را به گزینه‌ای انعطاف‌پذیر برای این کارها تبدیل می‌کند، و بررسی‌کننده را می‌توان با تغییر قالب فهرست پروکسی برای هر ارائه‌دهنده‌ای سازگار کرد.