بازگشت به وبلاگ

تنظیم پروکسی در PyCharm، IntelliJ IDEA و WebStorm: راهنمای کامل برای توسعه‌دهندگان

راهنمای جامع برای تنظیم پروکسی در IDE های JetBrains - PyCharm، IntelliJ IDEA، WebStorm و دیگران. از مسدودیت‌ها عبور کنید، پلاگین‌ها را نصب کنید و وابستگی‌ها را بدون محدودیت دانلود کنید.

📅۳۰ تیر ۱۴۰۵
```html

اگر پلاگین‌ها در IDE های JetBrains نصب نمی‌شوند، Maven یا pip نمی‌توانند وابستگی‌ها را دانلود کنند و Marketplace به سادگی باز نمی‌شود — احتمالاً مشکل در محدودیت‌های شبکه است. پروکسی این مشکل را در چند دقیقه حل می‌کند. در این مقاله تمام روش‌های تنظیم را بررسی خواهیم کرد: از طریق رابط کاربری داخلی IDE، از طریق متغیرهای سیستم و از طریق فایل‌های پیکربندی — برای PyCharm، IntelliJ IDEA، WebStorm، GoLand و دیگر محصولات JetBrains.

چرا توسعه‌دهنده به پروکسی در IDE نیاز دارد

IDE های JetBrains به طور فعال به شبکه متصل می‌شوند: پلاگین‌ها را از Marketplace دانلود می‌کنند، ایندکس‌ها را به‌روزرسانی می‌کنند، وابستگی‌ها را از طریق Maven Central، PyPI، npm و دیگر مخازن بارگذاری می‌کنند، مجوز را بررسی می‌کنند و تنظیمات را از طریق حساب JetBrains همگام‌سازی می‌کنند. اگر حتی یکی از این درخواست‌ها مسدود شود — کارایی کاهش می‌یابد یا به کلی متوقف می‌شود.

در اینجا موقعیت‌های خاصی وجود دارد که بدون پروکسی نمی‌توان از آن‌ها عبور کرد:

  • شبکه شرکتی با فایروال. بسیاری از شرکت‌ها ترافیک خارجی را فقط از طریق سرور پروکسی شرکتی عبور می‌دهند. بدون تنظیم آن در IDE، پلاگین‌ها نصب نخواهند شد و وابستگی‌ها دانلود نخواهند شد.
  • مسدودیت‌های جغرافیایی. بخشی از مخازن و CDN به لحاظ جغرافیایی محدود شده‌اند. پروکسی با موقعیت مکانی مناسب این محدودیت را برطرف می‌کند.
  • کار از کشوری با اینترنت محدود. JetBrains Marketplace، GitHub Packages، Maven Central ممکن است به طور مستقیم در دسترس نباشند.
  • توسعه و آزمایش برنامه‌های شبکه‌ای. نیاز است ترافیک IDE را از طریق یک گره خاص هدایت کنید تا رفتار برنامه را از منطقه‌ای دیگر بررسی کنید.
  • امنیت در شبکه‌های عمومی. هنگام کار از کافه یا فضای کار مشترک، پروکسی ترافیک IDE را رمزگذاری کرده و توکن‌ها و کلیدها را از سرقت محافظت می‌کند.
  • دور زدن محدودیت‌های تحریمی. پس از سال 2022، تعدادی از مخازن و خدمات خارجی محدودیت‌هایی بر اساس IP اعمال کردند — پروکسی اجازه می‌دهد بدون تغییر ابزارها به کار ادامه دهید.

بر خلاف مرورگر، که پروکسی یک بار تنظیم می‌شود و به طور جهانی کار می‌کند، در IDE های JetBrains پروکسی باید به طور جداگانه تنظیم شود — و گاهی اوقات در چندین مکان: در خود IDE، در مدیر وابستگی‌ها و در مفسر زبان. هر سطح را به ترتیب بررسی خواهیم کرد.

کدام نوع پروکسی برای JetBrains انتخاب کنیم

IDE های JetBrains از سه نوع پروکسی پشتیبانی می‌کنند: HTTP، HTTPS و SOCKS5. برای اکثر وظایف توسعه‌دهنده، پروکسی‌های HTTP/HTTPS مناسب هستند — آن‌ها به طور شفاف با تمام درخواست‌های IDE، Maven، Gradle و pip کار می‌کنند. SOCKS5 انعطاف‌پذیری بیشتری را ارائه می‌دهد و در سطح TCP کار می‌کند، که برای پروتکل‌های غیرمعمول مفید است.

نوع پروکسی پشتیبانی در IDE مناسب برای ویژگی‌ها
HTTP/HTTPS ✅ بومی پلاگین‌ها، وابستگی‌ها، مجوز ساده‌ترین تنظیمات
SOCKS5 ✅ بومی هر نوع اتصال TCP پشتیبانی از احراز هویت
فایل PAC ✅ از طریق تنظیمات سیستم شبکه‌های شرکتی مسیر‌یابی انعطاف‌پذیر
پروکسی سیستم ✅ شناسایی خودکار زمانی که در OS تنظیم شده باشد نیازی به تنظیمات اضافی ندارد

اگر با پروکسی شرکتی کار می‌کنید — احتمالاً آن HTTP/HTTPS با احراز هویت با نام کاربری و رمز عبور است. اگر از یک سرویس پروکسی خارجی برای دور زدن مسدودیت‌ها استفاده می‌کنید، به پروکسی‌های دیتاسنتر توجه کنید — آن‌ها سرعت و ثبات بالایی را ارائه می‌دهند، که در زمان دانلود وابستگی‌ها و ایندکس‌های بزرگ حیاتی است.

تنظیم پروکسی از طریق رابط IDE (HTTP/HTTPS)

این ساده‌ترین و توصیه‌شده‌ترین روش است. تنظیمات به تمام درخواست‌های شبکه IDE اعمال می‌شود: Marketplace، به‌روزرسانی‌ها، بررسی مجوز، همگام‌سازی پلاگین‌ها. دستورالعمل برای PyCharm، IntelliJ IDEA، WebStorm، GoLand، Rider، CLion و دیگر محصولات این خط یکسان است.

مرحله 1. تنظیمات IDE را باز کنید

در ویندوز و لینوکس: File → Settings (یا Ctrl+Alt+S).
در macOS: PyCharm → Preferences (یا Cmd+,).

مرحله 2. بخش پروکسی را پیدا کنید

در پنل سمت چپ تنظیمات به مسیر زیر بروید: Appearance & Behavior → System Settings → HTTP Proxy. یا به سادگی شروع به وارد کردن کلمه proxy در نوار جستجوی تنظیمات کنید — IDE به سرعت بخش مورد نظر را نشان می‌دهد.

مرحله 3. نوع پروکسی را انتخاب کرده و اطلاعات را پر کنید

در بخش HTTP Proxy سه گزینه خواهید دید:

  • No proxy — اتصال مستقیم (به طور پیش‌فرض).
  • Auto-detect proxy settings — IDE تنظیمات را از سیستم‌عامل می‌گیرد.
  • Manual proxy configuration — تنظیم دستی. این گزینه را انتخاب کنید.

هنگام انتخاب Manual proxy configuration فیلدها را پر کنید:

  • Host name — آدرس IP یا دامنه سرور پروکسی. به عنوان مثال: proxy.example.com یا 192.168.1.100.
  • Port number — پورت پروکسی. مقادیر استاندارد: 8080, 3128, 8888.
  • No proxy for — هاست‌هایی که باید به طور مستقیم (بدون پروکسی) بروند. معمولاً اینجا localhost, 127.0.0.1 و دامنه‌های داخلی شرکت اضافه می‌شوند.
  • Proxy authentication — اگر پروکسی نیاز به نام کاربری و رمز عبور دارد، تیک بزنید و اطلاعات را وارد کنید.

مرحله 4. اتصال را بررسی کنید

دکمه Check connection را بزنید و هر URL را وارد کنید — به عنوان مثال، https://plugins.jetbrains.com. اگر همه چیز به درستی تنظیم شده باشد، IDE وضعیت Connection successful را نشان می‌دهد. پس از آن دکمه OK را بزنید و IDE را دوباره راه‌اندازی کنید.

💡 نکته

تنظیمات HTTP Proxy در IDE های JetBrains به صورت جهانی ذخیره می‌شوند — آن‌ها به تمام پروژه‌ها اعمال می‌شوند و بین راه‌اندازی‌ها حفظ می‌شوند. اگر نیاز دارید بین پروکسی‌ها برای وظایف مختلف جابجا شوید، بهتر است از متغیرهای محیطی سیستم استفاده کنید (که در زیر توضیح داده شده‌اند).

تنظیم پروکسی SOCKS5 در IDE های JetBrains

SOCKS5 — پروتکلی انعطاف‌پذیرتر است که نه تنها با HTTP/HTTPS، بلکه با هر نوع اتصال TCP کار می‌کند. این مفید است اگر ارائه‌دهنده پروکسی شما دقیقاً SOCKS5 را ارائه دهد، یا اگر از تونل SSH استفاده می‌کنید.

در رابط IDE های JetBrains، بخش SOCKS در همانجا قرار دارد: Appearance & Behavior → System Settings → HTTP Proxy. در بلوک Manual proxy configuration دکمه رادیویی را از HTTP به SOCKS تغییر دهید.

فیلدها را مشابه پروکسی HTTP پر کنید:

  • Host name — آدرس سرور SOCKS5.
  • Port number — پورت (معمولاً 1080 یا 1081).
  • Proxy authentication — نام کاربری و رمز عبور، اگر نیاز باشد.

نکته مهم: کلاینت SOCKS داخلی IDE های JetBrains در سطح JVM کار می‌کند و فقط اتصالاتی را که IDE به طور مستقیم از طریق Java برقرار می‌کند، ضبط می‌کند. فرآیندهای خارجی — Maven Wrapper، Gradle Daemon، pip، npm — به عنوان فرآیندهای جداگانه اجرا می‌شوند و تنظیمات پروکسی را از رابط IDE به ارث نمی‌برند. برای آن‌ها به تنظیمات جداگانه نیاز است (به بخش‌های زیر مراجعه کنید).

تنظیم از طریق پارامترهای JVM (vmoptions)

اگر تنظیمات از طریق رابط کاربری کار نمی‌کند (به عنوان مثال، در برخی نسخه‌های IDE یا هنگام استفاده از پلاگین‌های غیرمعمول)، می‌توانید پروکسی را به طور مستقیم از طریق پارامترهای JVM تنظیم کنید. این یک روش مطمئن و سطح پایین است که به طور تضمینی به تمام اتصالات JVM اعمال می‌شود.

چگونه فایل vmoptions را باز کنیم

در منوی IDE به مسیر زیر بروید: Help → Edit Custom VM Options.... فایل pycharm64.vmoptions (یا idea64.vmoptions برای IntelliJ IDEA) در دایرکتوری تنظیمات کاربر باز خواهد شد.

به انتهای فایل خطوط زیر را برای پروکسی HTTP اضافه کنید:

-Dhttp.proxyHost=your.proxy.host
-Dhttp.proxyPort=8080
-Dhttps.proxyHost=your.proxy.host
-Dhttps.proxyPort=8080
-Dhttp.proxyUser=username
-Dhttp.proxyPassword=password
-Dhttps.proxyUser=username
-Dhttps.proxyPassword=password
-Dhttp.nonProxyHosts=localhost|127.0.0.1|*.local

برای پروکسی SOCKS5 از پارامترهای زیر استفاده کنید:

-DsocksProxyHost=your.socks.host
-DsocksProxyPort=1080
-DsocksProxyVersion=5

پس از ذخیره فایل، IDE را دوباره راه‌اندازی کنید. پارامترها به تمام اتصالات JVM، از جمله بارگذاری ایندکس‌ها، کار با پلاگین‌ها و کلاینت Git داخلی اعمال می‌شود.

⚠️ مهم

اگر در رمز عبور کاراکترهای خاصی وجود دارد (@, #, %)، باید آن‌ها را در کدگذاری URL فرار کنید. به عنوان مثال، @%40. در غیر این صورت JVM پارامترها را به درستی تجزیه نمی‌کند و پروکسی کار نخواهد کرد.

پروکسی از طریق متغیرهای محیطی سیستم

این روش به ویژه در لینوکس و macOS و همچنین در محیط‌های CI/CD راحت است. متغیرهای محیطی نه تنها توسط JVM، بلکه توسط فرآیندهای فرزند نیز به ارث برده می‌شوند — به این معنی که Maven، Gradle، pip، npm نیز به طور خودکار آن‌ها را دریافت می‌کنند.

متغیرهای استاندارد برای پروکسی HTTP:

export HTTP_PROXY=http://username:[email protected]:8080
export HTTPS_PROXY=http://username:[email protected]:8080
export NO_PROXY=localhost,127.0.0.1,::1

این خطوط را به ~/.bashrc, ~/.zshrc یا ~/.profile بسته به شل خود اضافه کنید. پس از آن ترمینال را دوباره راه‌اندازی کرده و IDE را از آن اجرا کنید — آن به متغیرهای محیطی دسترسی پیدا خواهد کرد.

در ویندوز متغیرها از طریق رابط سیستم تنظیم می‌شوند:

  1. به کنترل پنل → سیستم → تنظیمات پیشرفته سیستم → متغیرهای محیطی بروید.
  2. در بلوک «متغیرهای کاربر» روی ایجاد کلیک کنید.
  3. متغیرهای HTTP_PROXY و HTTPS_PROXY را با مقدار http://username:[email protected]:8080 اضافه کنید.
  4. IDE را دوباره راه‌اندازی کنید.

توجه داشته باشید: IDE های JetBrains در ویندوز به عنوان یک فرآیند جداگانه از طریق لانچر اجرا می‌شوند و متغیرهای محیطی که در جلسه ترمینال فعلی تنظیم شده‌اند ممکن است به IDE منتقل نشوند. بهتر است آن‌ها را از طریق رابط سیستم یا از طریق فایل vmoptions تنظیم کنید.

پروکسی برای Maven و Gradle در IntelliJ IDEA

Maven و Gradle ابزارهای جداگانه‌ای هستند که فایل‌های پیکربندی خود را دارند. حتی اگر پروکسی در رابط IDE تنظیم شده باشد، Maven Wrapper و Gradle Daemon ممکن است این تنظیمات را نادیده بگیرند، زیرا به عنوان فرآیندهای مستقل JVM اجرا می‌شوند.

پروکسی برای Maven

فایل ~/.m2/settings.xml را باز کنید (اگر وجود ندارد، آن را ایجاد کنید) و بخش <proxies> را اضافه کنید:

<settings>
  <proxies>
    <proxy>
      <id>main-proxy</id>
      <active>true</active>
      <protocol>https</protocol>
      <host>proxy.example.com</host>
      <port>8080</port>
      <username>your_username</username>
      <password>your_password</password>
      <nonProxyHosts>localhost|127.0.0.1</nonProxyHosts>
    </proxy>
  </proxies>
</settings>

اگر نیاز دارید پروکسی را به طور جداگانه برای HTTP و HTTPS تنظیم کنید، دو بلوک <proxy> با id و protocol متفاوت اضافه کنید.

پروکسی برای Gradle

برای Gradle تنظیمات پروکسی در فایل ~/.gradle/gradle.properties (به صورت جهانی) یا در فایل gradle.properties در ریشه پروژه (برای پروژه خاص) تنظیم می‌شود:

systemProp.http.proxyHost=proxy.example.com
systemProp.http.proxyPort=8080
systemProp.http.proxyUser=your_username
systemProp.http.proxyPassword=your_password
systemProp.http.nonProxyHosts=localhost|127.0.0.1

systemProp.https.proxyHost=proxy.example.com
systemProp.https.proxyPort=8080
systemProp.https.proxyUser=your_username
systemProp.https.proxyPassword=your_password

پس از ذخیره فایل، IntelliJ IDEA به طور خودکار تنظیمات جدید را در هنگام همگام‌سازی پروژه Gradle بعدی دریافت می‌کند. دکمه Reload All Gradle Projects (آیکون به‌روزرسانی در پنل Gradle در سمت راست) را بزنید — و وابستگی‌ها شروع به دانلود از طریق پروکسی خواهند کرد.

پروکسی برای pip و conda در PyCharm

PyCharm — IDE اصلی برای توسعه‌دهندگان Python است. نصب بسته‌ها از طریق pip و conda از طریق فرآیندهای جداگانه‌ای انجام می‌شود که تنظیمات پروکسی را از رابط PyCharm نمی‌خوانند. در اینجا نحوه تنظیم پروکسی برای هر مدیر بسته آورده شده است.

پروکسی برای pip

روش 1 — از طریق آرگومان خط فرمان هنگام نصب بسته:

pip install requests --proxy http://username:[email protected]:8080

روش 2 — از طریق فایل پیکربندی pip (به طور مداوم اعمال می‌شود). فایل زیر را باز کنید یا ایجاد کنید:

  • لینوکس/macOS: ~/.config/pip/pip.conf
  • ویندوز: %APPDATA%\pip\pip.ini
[global]
proxy = http://username:[email protected]:8080

روش 3 — از طریق متغیرهای محیطی (برای pip و سایر ابزارهای Python کار می‌کند):

export HTTP_PROXY=http://username:[email protected]:8080
export HTTPS_PROXY=http://username:[email protected]:8080

پروکسی برای conda

Conda از فایل پیکربندی خاص خود به نام .condarc استفاده می‌کند. آن را در دایرکتوری خانگی خود باز کنید و اضافه کنید:

proxy_servers:
  http: http://username:[email protected]:8080
  https: http://username:[email protected]:8080

یا دستور زیر را در ترمینال PyCharm اجرا کنید:

conda config --set proxy_servers.http http://proxy.host:8080
conda config --set proxy_servers.https http://proxy.host:8080

اگر با آینه‌های PyPI (به عنوان مثال، آینه یاندکس یا Nexus شرکتی) کار می‌کنید، می‌توانید به جای پروکسی فقط pip را به یک ایندکس جایگزین سوئیچ کنید. اما اگر آینه نیز در دسترس نیست — پروکسی تنها راه حل باقی می‌ماند. برای کارکرد پایدار با PyPI، پروکسی‌های مقیم گزینه‌های خوبی هستند — آن‌ها مانند درخواست‌های کاربر عادی به نظر می‌رسند و توسط ارائه‌دهندگان CDN PyPI مسدود نمی‌شوند.

مشکلات رایج و راه‌حل‌های آن‌ها

حتی با تنظیمات صحیح، گاهی اوقات چیزی درست پیش نمی‌رود. بیایید رایج‌ترین مشکلات و راه‌حل‌های آن‌ها را بررسی کنیم.

مشکل 1: «Connection refused» یا «Unable to connect to proxy»

علت: هاست، پورت نادرست یا پروکسی در دسترس نیست.
راه‌حل: آدرس و پورت پروکسی را بررسی کنید. سعی کنید از طریق curl به پروکسی متصل شوید:

curl -x http://proxy.host:8080 https://plugins.jetbrains.com

اگر curl نیز متصل نمی‌شود — مشکل در خود پروکسی است، نه در تنظیمات IDE.

مشکل 2: پروکسی تنظیم شده، اما پلاگین‌ها هنوز نصب نمی‌شوند

علت: IDE تنظیمات قدیمی را کش کرده یا تنظیمات به همه اجزا اعمال نشده است.
راه‌حل:

  1. IDE را به طور کامل ببندید (اطمینان حاصل کنید که فرآیند در پس‌زمینه باقی نمانده باشد).
  2. کش را پاک کنید: File → Invalidate Caches → Invalidate and Restart.
  3. بررسی کنید که در فایل vmoptions پارامترهای متضاد وجود نداشته باشد.

مشکل 3: خطای SSL/TLS هنگام کار از طریق پروکسی

علت: پروکسی شرکتی SSL inspection (MITM) را انجام می‌دهد و گواهی‌ها را تغییر می‌دهد. JVM به گواهی تغییر یافته اعتماد ندارد.
راه‌حل: از مدیر سیستم بخواهید که گواهی ریشه CA شرکتی را ارائه دهد و آن را در Java KeyStore وارد کنید:

keytool -import -alias corporate-ca -keystore $JAVA_HOME/lib/security/cacerts \
  -file corporate-ca.crt -storepass changeit

در IDE های JetBrains یک ابزار داخلی وجود دارد: Settings → Tools → Server Certificates — در آنجا می‌توانید گواهی معتبر را از طریق GUI اضافه کنید.

مشکل 4: پروکسی با احراز هویت رمز عبور را نمی‌پذیرد

علت: کاراکترهای خاص در رمز عبور فرار نشده‌اند، یا پروکسی از احراز هویت NTLM/Kerberos استفاده می‌کند (پروکسی‌های شرکتی مایکروسافت).
راه‌حل: برای پروکسی‌های NTLM، JVM به طور بومی از آن پشتیبانی می‌کند، اما نیاز به تعیین پارامترهای اضافی است:

-Djdk.http.auth.tunneling.disabledSchemes=""
-Djdk.http.auth.proxying.disabledSchemes=""

مشکل 5: Git در IDE از طریق پروکسی کار نمی‌کند

علت: کلاینت Git داخلی JetBrains از Git سیستم استفاده می‌کند، نه اتصالات JVM. تنظیمات پروکسی از IDE بر آن تأثیری ندارد.
راه‌حل: پروکسی را مستقیماً در Git تنظیم کنید:

git config --global http.proxy http://username:[email protected]:8080
git config --global https.proxy http://username:[email protected]:8080
علائم علت احتمالی روش اصلاح
پلاگین‌ها نصب نمی‌شوند پروکسی در IDE تنظیم نشده است Settings → HTTP Proxy
Maven وابستگی‌ها را دانلود نمی‌کند تنظیمات در settings.xml وجود ندارد ~/.m2/settings.xml → proxies
pip بسته‌ها را نصب نمی‌کند pip تنظیمات IDE را نمی‌خواند pip.conf یا متغیرهای ENV
خطاهای SSL بازرسی MITM در پروکسی وارد کردن گواهی شرکتی
Git از طریق پروکسی کار نمی‌کند Git تنظیمات JVM را نمی‌خواند git config --global http.proxy
Gradle همگام‌سازی نمی‌شود تنظیمات در gradle.properties وجود ندارد ~/.gradle/gradle.properties

نتیجه‌گیری

تنظیم پروکسی در IDE های JetBrains — این یک دکمه نیست، بلکه چندین سطح پیکربندی است. نکته اصلی که باید به خاطر بسپارید: خود IDE (پلاگین‌ها، مجوز، Marketplace) از طریق Settings → HTTP Proxy یا از طریق پارامترهای JVM در vmoptions تنظیم می‌شود. مدیران وابستگی — Maven، Gradle، pip، conda — نیاز به تنظیمات جداگانه در فایل‌های پیکربندی خود دارند. Git درون IDE از طریق git config جهانی تنظیم می‌شود.

اگر از پروکسی برای دور زدن مسدودیت‌های جغرافیایی یا محدودیت‌های شبکه شرکتی استفاده می‌کنید، مهم است که یک سرور پروکسی پایدار و سریع انتخاب کنید. برای کار با مخازن، Marketplace و دانلود وابستگی‌ها، پروکسی‌های دیتاسنتر گزینه‌های خوبی هستند — آن‌ها سرعت بالا و تأخیر کم را فراهم می‌کنند، که در زمان همگام‌سازی پروژه‌های بزرگ با صدها وابستگی حیاتی است. اگر به حداکثر سازگاری با خدماتی که IP های سروری را مسدود می‌کنند نیاز دارید، پروکسی‌های مقیم را در نظر بگیرید — آن‌ها از آدرس‌های واقعی کاربر استفاده می‌کنند و تقریباً هیچ‌گونه مشکوکی از سیستم‌های حفاظتی CDN و مخازن ایجاد نمی‌کنند.

```