Skip to content
Beginner / 2 min read

راهاندازی پروکسی IPRoyal: انتخاب HTTP در برابر SOCKS5 در برابر Shadowsocks و تأیید اولین درخواست شما

راهنمای عملی اولین اتصال به پروکسیهای IPRoyal: پروتکل مناسب برای بار کاری خود را انتخاب کنید، یک URL پروکسی کارآمد بسازید، سپس اتصال و رفتار DNS را با curl و Python در macOS یا Linux تأیید کنید.

مرور کلی

IPRoyal پروکسیهای مسکونی، دیتاسنتر و ISP را از طریق HTTP(S)، SOCKS5 و تونلزنی به سبک Shadowsocks ارائه میدهد، با صورتحساب پرداخت بهازای مصرف یا ماهانه ثابت، پشتیبانیشده با استخری از بیش از ۳۲ میلیون IP. همین تنوع پروتکل دقیقاً دلیل انتخاب آن توسط افراد است — و همچنین رایجترین دلیل شکست در راهاندازی اولیه. چسباندن یک endpoint SOCKS5 در فیلدی که فقط HTTP میپذیرد، یا برعکس، خطاهایی تولید میکند که شبیه پروکسی مرده به نظر میرسند، نه عدم تطابق پیکربندی.

این آموزش شما را از یک حساب تازه IPRoyal به یک اتصال تأییدشده و قابل اسکریپتنویسی میبرد. نوع پروکسی و پروتکل مناسب برای بار کاری خود را انتخاب میکنید، یک URL پروکسی کارآمد میسازید، اثبات میکنید که ترافیک واقعاً از IPRoyal خارج میشود، و بررسی میکنید که DNS دور تونل resolve نشود. هر دستور در ترمینال macOS یا Linux اجرا میشود؛ URLهای پروکسی در Windows یکسان هستند، فقط نحو متغیرهای شل متفاوت است.

آنچه نیاز دارید

  • یک پلن فعال IPRoyal (مسکونی، دیتاسنتر یا ISP) و دسترسی به داشبورد خود
  • میزبان gateway، پورت، نام کاربری و رمز عبور دقیقاً همانطور که داشبورد نشان میدهد
  • curl ساختهشده با پشتیبانی SOCKS5 (نسخههای استاندارد روی macOS، Debian و Ubuntu شامل آن هستند)
  • اختیاری: Python 3.8+ با کتابخانه requests برای بررسیهای اسکریپتی

انتخاب نوع پروکسی و پروتکل

نوع پروکسی و پروتکل دو تصمیم جداگانه هستند. نوع تعیین میکند که با کدام IP ظاهر میشوید؛ پروتکل تعیین میکند که ترافیک شما در مسیر چگونه بستهبندی میشود. ابتدا نوع را انتخاب کنید، سپس پروتکل را.

بار کاری نوع پروکسی پروتکل چرا مناسب است
حریم خصوصی مرورگر در یک منطقه مسکونی HTTP(S) سادهترین برای پیکربندی؛ در هر فیلد پروکسی مرورگر کار میکند
ابزارهای CLI و اسکرپرهایی که نباید DNS را نشت دهند مسکونی SOCKS5 رفتار تونل کامل با resolve کردن DNS از راه دور
برنامههایی که فقط پروکسی HTTP میپذیرند ISP HTTP(S) آدرسهای پایدار به سبک هاستینگ که کمتر غیرعادی به نظر میرسند
نشستهای طولانیمدت، یک IP برای هر حساب ISP یا مسکونی SOCKS5 یا Shadowsocks اتصالها بدون چرخش اجباری پایدار میمانند
شبکههایی که پورتهای پروکسی ساده در آنها محدود یا مسدود شدهاند هر کدام Shadowsocks تونلزنی مبهمسازیشده وقتی پورت پروکسی خالی فیلتر میشود

در دسترس بودن پروتکل ممکن است بر اساس محصول و پلن متفاوت باشد، بنابراین قبل از ساختن هر چیزی تأیید کنید که داشبورد خاص شما چه چیزی ارائه میدهد. جایی که هر دو ارائه میشوند، HTTP(S) اشکالزدایی آسانتری دارد و SOCKS5 توانمندتر است — با HTTP(S) شروع کنید، سپس وقتی اعتبارنامهها اثبات شد که کار میکنند به SOCKS5 بروید.

مراحل

  1. endpoint و اعتبارنامهها را از داشبورد کپی کنید. آنها را دوباره تایپ نکنید. از دکمههای کپی استفاده کنید تا فاصلههای انتهایی و کاراکترهای شبیه هرگز وارد نشوند. چهار مقدار مورد نیاز شما میزبان gateway، پورت، نام کاربری و رمز عبور هستند.

    export PROXY_USER="dashboard-username"
    export PROXY_PASS="dashboard-password"
    export PROXY_HOST="gateway-host-from-dashboard"
    export PROXY_PORT="gateway-port-from-dashboard"
    
  2. URL پروکسی را برای هر پروتکل بسازید. قالب URL همهجا یکسان است: اعتبارنامهها، سپس میزبان، سپس پورت.

    http://USERNAME:PASSWORD@HOST:PORT     # HTTP/HTTPS proxy
    socks5h://USERNAME:PASSWORD@HOST:PORT  # SOCKS5, DNS resolved at the proxy
    

    اگر رمز عبور شما شامل @، :، / یا ? است، آن را percent-encode کنید (@ به %40، : به %3A تبدیل میشود). کاراکترهای خاص کدگذرینشده رایجترین علت واحد شکست احراز هویت هستند.

  3. یک درخواست HTTP(S) را از ترمینال تأیید کنید. این کار ثابت میکند اعتبارنامهها، میزبان و پورت همه درست هستند، قبل از اینکه مرورگر یا اسکریپتی را درگیر کنید.

    curl -sS \
      --proxy "http://$PROXY_USER:$PROXY_PASS@$PROXY_HOST:$PROXY_PORT" \
      "https://api.ipify.org?format=json"
    

    باید یک شیء JSON کوچک حاوی مقدار ip دریافت کنید که آدرس خودتان نیست. اگر IP واقعی خود را اینجا دیدید، فلگ نادیده گرفته شده و ترافیک مستقیماً خارج شده است.

  4. یک درخواست SOCKS5 را تأیید کنید و DNS از راه دور بگیرید. از --socks5-hostname استفاده کنید تا پروکسی نام میزبان را resolve کند، نه اینکه دستگاه شما آن را بهصورت محلی انجام دهد.

    curl -sS \
      --socks5-hostname "$PROXY_USER:$PROXY_PASS@$PROXY_HOST:$PROXY_PORT" \
      "https://api.ipify.org?format=json"
    

    تفاوت مهم است: --socks5 DNS را روی دستگاه شما resolve میکند و سپس اتصال را تونل میزند، در حالی که --socks5-hostname نام میزبان را به پروکسی میفرستد. برای کارهای مربوط به حریم خصوصی، --socks5-hostname و طرح URL معادل socks5h:// را در اسکریپتها ترجیح دهید.

  5. وقتی چیزی مشکوک به نظر میرسد تونل را بررسی کنید. خروجی verbose نشان میدهد که آیا پروکسی درخواست را قبل از درگیر شدن محتوای صفحه پذیرفته است یا نه.

    curl -v \
      --proxy "http://$PROXY_USER:$PROXY_PASS@$PROXY_HOST:$PROXY_PORT" \
      -o /dev/null "https://example.com"
    

    به دنبال یک خط CONNECT بگردید که بعد از آن HTTP/1.1 200 Connection established آمده باشد. یک 407 در آن نقطه مشکل احراز هویت است؛ یک timeout در آن نقطه مشکل میزبان یا پورت است.

  6. همان بررسی را در Python اسکریپت کنید. برای پروکسیهای HTTP، requests به بستههای اضافی نیاز ندارد.

    import os
    import requests
    
    proxy_url = os.environ["IPROYAL_PROXY_URL"]  # http://user:pass@host:port
    proxies = {"http": proxy_url, "https": proxy_url}
    
    response = requests.get(
        "https://api.ipify.org?format=json",
        proxies=proxies,
        timeout=30,
    )
    response.raise_for_status()
    print(response.json())
    

    برای SOCKS5، ابتدا وابستگی اختیاری را نصب کنید، سپس از یک URL socks5h:// استفاده کنید تا DNS در سمت پروکسی resolve شود.

    pip install "requests[socks]"
    
    import os
    import requests
    
    socks_url = os.environ["IPROYAL_SOCKS_URL"]  # socks5h://user:pass@host:port
    proxies = {"http": socks_url, "https": socks_url}
    
    session = requests.Session()
    print(session.get("https://api.ipify.org", proxies=proxies, timeout=30).text)
    
  7. بین چرخش و نشستهای sticky تصمیم بگیرید. مرحله ۳ را دو بار با همان اعتبارنامهها اجرا کنید و دو آدرس را مقایسه کنید. اگر IP تغییر نکرده است، پلن شما یک نشست sticky نگه میدارد، که همان چیزی است که برای ورودها و فرمهای چندمرحلهای میخواهید. اگر به آدرس جدید نیاز دارید، با استفاده از کنترلهای نشست یا چرخش که داشبورد شما ارائه میدهد یکی درخواست کنید، نه با ویرایش دستی پارامترهای URL — اعتبارنامههای تولیدشده از قبل بهدرستی قالببندی شدهاند.

  8. منطقه خروج را تأیید کنید و نشتهای DNS را بررسی کنید. یک درخواست trace از Cloudflare هم IP خروج و هم کشوری که در آن ثبت شده است را نشان میدهد، که سریعترین راه برای گرفتن یک پلن بدمسیریابیشده است.

    curl -sS \
      --proxy "http://$PROXY_USER:$PROXY_PASS@$PROXY_HOST:$PROXY_PORT" \
      "https://1.1.1.1/cdn-cgi/trace"
    

    خطوط ip= و loc= را بخوانید: loc= باید با منطقهای که قصد استفاده از آن را داشتید مطابقت داشته باشد. سپس یک تست نشت DNS عمومی در مرورگری که پیکربندی کردهاید اجرا کنید؛ اگر resolver نشاندادهشده ISP محلی شماست نه شبکه پروکسی، آن مرورگر را به پیکربندی SOCKS5 یا کلاینتی که از DNS از راه دور به سبک socks5h پشتیبانی میکند تغییر دهید.

عیبیابی

  • 407 Proxy Authentication Required — اعتبارنامهها اشتباه، باطلشده، یا حاوی کاراکترهای خاص کدگذرینشده هستند. رمز عبور را percent-encode کنید و هر دو مقدار را دوباره کپی کنید.
  • curl: (7) Failed to connect یا timeout — میزبان یا پورت اشتباه است، یا پروتکل و پورت مطابقت ندارند (پورت HTTP با URL SOCKS5 استفاده شده). ستون پروتکل را در داشبورد بررسی کنید.
  • curl: (97) Can't complete SOCKS5 connection — curl به چیزی رسیده که endpoint SOCKS5 نیست. تأیید کنید که روی پورت SOCKS5 هستید نه پورت HTTP.
  • در curl کار میکند، در مرورگر شکست میخورد — بیشتر فیلدهای پروکسی مرورگر فقط HTTP(S) را میپذیرند. یا از endpoint HTTP استفاده کنید یا SOCKS5 را در سطح سیستمعامل یا کلاینت پیکربندی کنید.
  • 403 یا 429 مکرر از یک سایت هدف — سایت در حال محدودسازی نرخ آدرس یا نشست است. نرخ درخواست را کاهش دهید، یا یک نشست را برای دنباله طولانیتری نگه دارید بهجای چرخش در هر درخواست.
  • IP خروج هرگز تغییر نمیکند — یک نشست sticky فعال است، یا استخر انتخابشده از نظر جغرافیایی باریک است. از کنترلهای نشست داشبورد برای درخواست خروج متفاوت استفاده کنید.
  • HTTPS کار میکند اما صفحات هنوز منطقه محلی شما را نشان میدهند — DNS بهصورت محلی resolve میشود. به socks5h/--socks5-hostname تغییر دهید، یا کلاینت را به پیکربندی تونل کامل ببرید.
  • کلاینت Shadowsocks شروع نمیشود — معمولاً cipher یا کلید اشتباه تایپشده است. پیکربندی تولیدشده را جای رونویسی از آن بچسبانید، و مطمئن شوید پورت شنود محلی که انتخاب کردهاید از قبل استفاده نمیشود.
  • هزینهها بهطور غیرمنتظره بالا میروند — پلنهای پرداخت بهازای مصرف، مصرف را اندازهگیری میکنند، بنابراین یک حلقه لجامگسیخته در یک اسکرپر یا مرورگری که در پسزمینه همگامسازی میکند میتواند سهمیه را بهسرعت مصرف کند. بعد از اولین اجرای تأیید، مصرف را بررسی کنید.

خلاصه

  • نوع پروکسی (مسکونی، دیتاسنتر، ISP) انتخاب میکند که با کدام IP ظاهر میشوید؛ پروتکل (HTTP، SOCKS5، Shadowsocks) انتخاب میکند که ترافیک چگونه بستهبندی شود. هر دو را آگاهانه تصمیم بگیرید.
  • میزبان، پورت، نام کاربری و رمز عبور را از داشبورد کپی کنید، کاراکترهای خاص را percent-encode کنید، و برای هر پروتکل یک قالب URL بسازید.
  • قبل از دست زدن به مرورگر یا اسکریپت، با یک درخواست curl به یک سرویس echo IP تأیید کنید — این کار خطاهای اعتبارنامه را از خطاهای برنامه جدا میکند.
  • هر زمان که حریم خصوصی DNS مهم است از socks5h:// یا --socks5-hostname استفاده کنید، و منطقه خروج را با یک درخواست trace تأیید کنید.
  • چرخش در برابر نشستهای sticky را زود تست کنید، چون این انتخاب تعیین میکند که ابزار شما باید چگونه retryها و ورودها را مدیریت کند.

وقتی یک درخواست تأییدشده موفق شد، همان اعتبارنامهها مستقیماً در یک مرورگر، یک کتابخانه اسکرپینگ، یا یک ابزار زنجیرهسازی پروکسی قرار میگیرند. IPRoyal با توجه به تنوع پروتکل و گزینههای صورتحسابش، یک ارائهدهنده معقول برای این گردش کار است؛ مراحل تأیید بالا برای هر ارائهدهندهای که آن را مقایسه میکنید اعمال میشود.