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

پراکسی برای VS Code: تنظیم همگام‌سازی افزونه‌ها و همگام‌سازی تنظیمات از طریق پراکسی شرکتی یا مقیم

نحوه تنظیم پروکسی در Visual Studio Code را توضیح می‌دهیم تا همگام‌سازی افزونه‌ها و همگام‌سازی تنظیمات بدون خطا کار کند - حتی در پشت فایروال‌های شرکتی یا از مناطق مسدود شده.

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

Visual Studio Code قادر است افزونه‌ها، تنظیمات و اسنیپت‌ها را بین دستگاه‌ها همگام‌سازی کند — اما همه این‌ها از طریق سرورهای مایکروسافت انجام می‌شود که اغلب در پشت فایروال‌های شرکتی، در شبکه‌های اداری با فیلترینگ سخت یا از مناطق با دسترسی محدود در دسترس نیستند. نتیجه — بازار افزونه‌ها متوقف می‌شود، همگام‌سازی تنظیمات متصل نمی‌شود، و به‌روزرسانی‌ها دانلود نمی‌شوند. در این مقاله بررسی می‌کنیم که چگونه پروکسی را به درستی در VS Code تنظیم کنیم تا همه این مشکلات برای همیشه حل شوند.

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

Visual Studio Code فقط یک ویرایشگر متن نیست. در زیر کاپوت، به طور مداوم به سرورهای خارجی متصل می‌شود: به‌روزرسانی‌های افزونه‌ها را از marketplace.visualstudio.com دانلود می‌کند، تنظیمات را از طریق vscode.dev و سرورهای حساب GitHub/Microsoft همگام‌سازی می‌کند، به‌روزرسانی‌های خود ویرایشگر را بررسی می‌کند و تلمتری (اگر غیرفعال نشده باشد) ارسال می‌کند.

همه این درخواست‌ها از طریق اتصالات استاندارد HTTPS انجام می‌شود. و اینجا جایی است که مشکلات شروع می‌شود:

  • شبکه‌های شرکتی — مدیران سیستم دسترسی مستقیم به اینترنت را مسدود می‌کنند و از کاربران می‌خواهند که تمام ترافیک را از طریق سرور پروکسی شرکتی عبور دهند. VS Code از این موضوع «نمی‌داند» و به سادگی نمی‌تواند متصل شود.
  • فایروال‌های اداری با لیست سفید — فقط دامنه‌های خاصی مجاز هستند و marketplace.visualstudio.com در این لیست نیست.
  • محدودیت‌های منطقه‌ای — در برخی کشورها و مناطق، دسترسی به خدمات مایکروسافت محدود یا ناپایدار است. پروکسی با IP کشور مورد نظر این مشکل را حل می‌کند.
  • تعارضات VPN — برخی از VPNهای شرکتی ترافیک را رهگیری می‌کنند، اما به درستی منتقل نمی‌کنند و در نتیجه VS Code اتصال خود را به بازار از دست می‌دهد.
  • اینترنت ناپایدار + پروکسی با کش — سرور پروکسی می‌تواند بسته‌های افزونه‌ها را کش کند و نصب را در تیم‌هایی با کانال‌های کند تسریع کند.

علائم همه این مشکلات مشابه است: افزونه‌ها نصب نمی‌شوند یا در حال بارگذاری متوقف می‌شوند، همگام‌سازی تنظیمات خطای تأیید اعتبار می‌دهد یا «متصل نمی‌شود»، به‌روزرسانی‌های VS Code دانلود نمی‌شوند و در پنل خروجی خطاهای ECONNREFUSED یا ETIMEDOUT مشاهده می‌شود.

چگونه VS Code پروکسی را پردازش می‌کند: چه چیزی مهم است

VS Code بر پایه Electron ساخته شده است که از موتور Chromium برای درخواست‌های شبکه استفاده می‌کند. این بدان معنی است که تنظیمات پروکسی مشابه تنظیمات مرورگر کار می‌کند — ویرایشگر از پروکسی‌های HTTP، HTTPS و SOCKS5 پشتیبانی می‌کند.

مهم است که سلسله‌مراتب را درک کنیم که VS Code چگونه تنظیمات پروکسی را جستجو می‌کند:

  1. تنظیمات پروکسی سیستم — اگر در Windows/macOS/Linux پروکسی سیستم تنظیم شده باشد، VS Code به طور خودکار آن را شناسایی می‌کند (پارامتر http.systemProxy).
  2. متغیرهای محیطیHTTP_PROXY, HTTPS_PROXY, NO_PROXY — روش استاندارد برای Linux/macOS.
  3. تنظیمات در settings.json — تعیین صریح پروکسی از طریق پارامترهای http.proxy و گزینه‌های مرتبط.
  4. آرگومان‌های خط فرمان — می‌توان VS Code را با پرچم‌های پروکسی به طور مستقیم راه‌اندازی کرد.

اولویت: تنظیمات صریح در settings.json بر متغیرهای محیطی غلبه می‌کند، که به نوبه خود بر تنظیمات سیستم غلبه می‌کند. اگر چیزی کار نمی‌کند — این ترتیب را بررسی کنید.

💡 نکته مهم

VS Code از دو استک شبکه جداگانه استفاده می‌کند: یکی برای خود ویرایشگر (Electron/Chromium) و دیگری — برای افزونه‌ها که می‌توانند درخواست‌های HTTP خود را از طریق Node.js انجام دهند. تنظیم پروکسی در settings.json هر دو استک را پوشش می‌دهد، اما برخی از افزونه‌ها تنظیمات سیستم را نادیده می‌گیرند و به پیکربندی جداگانه نیاز دارند.

تنظیم پروکسی از طریق settings.json: گام به گام

این مطمئن‌ترین و توصیه‌شده‌ترین روش است. تنظیمات در settings.json به طور جهانی برای همه درخواست‌های شبکه VS Code اعمال می‌شود.

گام 1: باز کردن settings.json

کلیدهای Ctrl+Shift+P (یا Cmd+Shift+P در Mac) را فشار دهید، عبارت «Open User Settings (JSON)» را وارد کنید و این گزینه را انتخاب کنید. فایل تنظیمات کاربر باز می‌شود.

گام 2: افزودن پارامترهای پروکسی

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

پروکسی HTTP/HTTPS (بدون تأیید اعتبار):

{
  "http.proxy": "http://192.168.1.100:3128",
  "http.proxyStrictSSL": false
}

پروکسی HTTP/HTTPS با نام کاربری و رمز عبور:

{
  "http.proxy": "http://username:password@proxy-host:3128",
  "http.proxyStrictSSL": false
}

پروکسی SOCKS5:

{
  "http.proxy": "socks5://username:password@proxy-host:1080",
  "http.proxyStrictSSL": false
}

گام 3: با پارامترها آشنا شوید

پارامتر مقدار کی استفاده شود
http.proxy URL پروکسی پارامتر اصلی، الزامی است
http.proxyStrictSSL true / false false — اگر پروکسی از گواهی خود امضا شده استفاده کند
http.proxyAuthorization رشته Base64 روش جایگزین برای ارسال نام کاربری/رمز عبور
http.noProxy لیست دامنه‌ها دامنه‌هایی که باید از پروکسی عبور کنند (localhost، میزبان‌های داخلی)
http.systemProxy on / off / override مدیریت پروکسی سیستم (پارامتر جدید در VS Code 1.87+)

گام 4: VS Code را دوباره راه‌اندازی کنید

پس از ذخیره settings.json، VS Code را به طور کامل ببندید و دوباره باز کنید. راه‌اندازی جزئی (Reload Window) گاهی اوقات تنظیمات شبکه جدید را اعمال نمی‌کند.

پروکسی از طریق متغیرهای محیطی (HTTP_PROXY / HTTPS_PROXY)

این روش به ویژه در Linux و macOS راحت است و همچنین در تیم‌هایی که پروکسی در سطح سیستم تنظیم می‌شود و باید برای همه ابزارهای توسعه — نه تنها برای VS Code، بلکه برای npm، pip، git و غیره اعمال شود.

Linux / macOS — تنظیم دائمی

به ~/.bashrc، ~/.zshrc یا ~/.profile اضافه کنید:

export HTTP_PROXY="http://username:password@proxy-host:3128"
export HTTPS_PROXY="http://username:password@proxy-host:3128"
export NO_PROXY="localhost,127.0.0.1,*.local,*.internal"

پس از آن، source ~/.bashrc را اجرا کنید (یا به جلسه وارد شوید) و VS Code را از ترمینال با دستور code . راه‌اندازی کنید — متغیرها به ارث برده می‌شوند.

Windows — از طریق متغیرهای سیستم

«تنظیمات سیستم» → «تنظیمات پیشرفته سیستم» → «متغیرهای محیطی» را باز کنید. متغیرهای HTTP_PROXY و HTTPS_PROXY را به بخش «متغیرهای کاربر» (یا «متغیرهای سیستم» برای اعمال به همه کاربران) اضافه کنید. پس از ذخیره، VS Code را دوباره راه‌اندازی کنید.

راه‌اندازی VS Code با پروکسی به طور مستقیم از خط فرمان

اگر نیاز به بررسی سریع بدون تنظیم دائمی دارید:

# Linux/macOS
HTTP_PROXY=http://proxy-host:3128 HTTPS_PROXY=http://proxy-host:3128 code .

# Windows PowerShell
$env:HTTP_PROXY="http://proxy-host:3128"; $env:HTTPS_PROXY="http://proxy-host:3128"; code .

همگام‌سازی تنظیمات از طریق پروکسی: تشخیص و حل مشکلات

همگام‌سازی تنظیمات — ویژگی داخلی VS Code است که تنظیمات، افزونه‌ها، اسنیپت‌ها، کلیدهای میانبر و پروفایل‌ها را بین دستگاه‌ها از طریق حساب مایکروسافت یا GitHub همگام‌سازی می‌کند. این ویژگی از طریق درخواست‌های HTTPS به سرورهای مایکروسافت و GitHub کار می‌کند و در اینجا پروکسی به شدت مهم است.

خطاهای متداول همگام‌سازی تنظیمات از طریق پروکسی

خطا دلیل راه حل
«نمی‌توان به سرور متصل شد» پروکسی تنظیم نشده یا مسدود شده است تنظیم http.proxy در settings.json
«تأیید اعتبار ناموفق بود» پروکسی توکن OAuth را رهگیری می‌کند غیرفعال کردن بازرسی SSL برای *.microsoft.com
«همگام‌سازی روشن است اما همگام‌سازی نمی‌شود» پروکسی شرکتی WebSocket را مسدود می‌کند استفاده از پروکسی با پشتیبانی WebSocket
همگام‌سازی در «همگام‌سازی...» متوقف می‌شود زمان‌بر بودن اتصال از طریق پروکسی کند تغییر پروکسی به یک پروکسی سریع‌تر

تشخیص از طریق خروجی

View → Output را باز کنید و از منوی کشویی «Settings Sync» را انتخاب کنید. در اینجا همه تلاش‌های اتصال و کدهای خطا قابل مشاهده است. به دنبال خطوطی با ECONNREFUSED، 407 Proxy Authentication Required یا CERT_UNTRUSTED باشید — هر یک از این کدها نشان‌دهنده یک مشکل خاص با پروکسی است.

اگر خطای 407 را مشاهده کردید — پروکسی نیاز به تأیید اعتبار دارد، نام کاربری و رمز عبور را به URL پروکسی اضافه کنید. اگر CERT_UNTRUSTED"http.proxyStrictSSL": false را تنظیم کنید یا گواهی ریشه CA شرکتی را اضافه کنید.

دامنه‌هایی که باید برای همگام‌سازی تنظیمات در دسترس باشند

اطمینان حاصل کنید که از طریق پروکسی شما دامنه‌های زیر در دسترس هستند:

  • login.microsoftonline.com — تأیید اعتبار از طریق حساب مایکروسافت
  • github.com — تأیید اعتبار از طریق GitHub
  • api.github.com — API GitHub برای همگام‌سازی از طریق Gist
  • vscode.dev — سرویس همگام‌سازی VS Code
  • *.vscode-cdn.net — CDN برای منابع VS Code

بازار افزونه‌ها: چرا افزونه‌ها نصب نمی‌شوند و چگونه اصلاح کنیم

بازار VS Code از طریق دامنه marketplace.visualstudio.com و سرورهای CDN مایکروسافت کار می‌کند. اگر پروکسی به درستی تنظیم شده باشد، نصب افزونه‌ها به طور شفاف کار می‌کند. اما چند مشکل خاص وجود دارد.

افزونه نصب می‌شود، اما کار نمی‌کند

بسیاری از افزونه‌ها هنگام راه‌اندازی درخواست‌های شبکه خود را انجام می‌دهند — به عنوان مثال، سرورهای زبانی (LSP)، وابستگی‌های باینری یا به‌روزرسانی‌های پایگاه داده را دانلود می‌کنند. این درخواست‌ها از طریق Node.js درون افزونه انجام می‌شود و آنها به تنظیمات پروکسی VS Code وابسته هستند، اما فقط اگر افزونه با در نظر گرفتن متغیرهای HTTP_PROXY نوشته شده باشد.

اگر افزونه هنوز هم در پشت پروکسی کار نمی‌کند — مستندات آن را بررسی کنید. بسیاری از افزونه‌های محبوب تنظیمات پروکسی خود را دارند. به عنوان مثال:

  • Python (Pylance/Pylint) — از متغیرهای محیطی سیستم استفاده می‌کند
  • ESLint، Prettier — به صورت محلی کار می‌کنند، پروکسی نیاز نیست
  • GitHub Copilot — نیاز به دسترسی به api.github.com دارد، پروکسی را از settings.json می‌گیرد
  • Remote - SSH — پروکسی برای تونل SSH نیاز است، به طور جداگانه در پیکربندی SSH تنظیم می‌شود
  • Docker — از پروکسی سیستم Docker daemon استفاده می‌کند

نصب افزونه‌ها به صورت دستی (آفلاین)

اگر پروکسی در دسترس نیست یا ناپایدار است، می‌توان افزونه‌ها را به صورت دستی از طریق .vsix-فایل نصب کرد. فایل افزونه را از marketplace.visualstudio.com بر روی دستگاهی با دسترسی به اینترنت دانلود کنید، سپس در VS Code: Extensions → ··· → Install from VSIX.

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

انتخاب نوع پروکسی بستگی به وظیفه دارد. بیایید گزینه‌های اصلی را در ارتباط با توسعه بررسی کنیم.

نوع پروکسی سرعت اعتمادپذیری کی برای VS Code مناسب است
پروکسی دیتاسنتر ⚡ بالا ✅ پایدار عبور از محدودیت‌های شرکتی، دانلود افزونه‌ها، پایپ‌لاین‌های CI/CD
پروکسی‌های مسکونی 🔄 متوسط ✅ اعتماد بالا دسترسی به منابع جغرافیایی محافظت‌شده، تست از منطقه خاص
پروکسی‌های موبایل 🔄 متوسط ✅ حداکثر اعتماد به ندرت برای VS Code نیاز است، اما در توسعه برنامه‌های موبایل با تست جغرافیایی مفید است
پروکسی شرکتی (Squid، ISA) ⚡ بالا ⚠️ بستگی به تنظیمات دارد محیط اداری، الزامی به سیاست شرکت

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

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

پروکسی شرکتی با بازرسی SSL: مورد خاص

پروکسی‌های شرکتی با قابلیت بازرسی SSL (man-in-the-middle) یک دردسر جداگانه برای توسعه‌دهندگان هستند. این پروکسی ترافیک HTTPS را رمزگشایی می‌کند، آن را بررسی می‌کند و دوباره رمزگذاری می‌کند و با گواهی شرکتی خود امضا می‌کند. در نتیجه VS Code گواهی «ناشناس» را می‌بیند و از کار کردن امتناع می‌کند.

علائم

  • خطای CERT_UNTRUSTED یا unable to verify the first certificate در خروجی
  • افزونه‌ها نصب نمی‌شوند، اگرچه پروکسی به درستی مشخص شده است
  • همگام‌سازی تنظیمات تأیید نمی‌شود
  • npm و pip نیز در مورد گواهی‌ها مشکل دارند

راه حل 1: غیرفعال کردن تأیید SSL (سریع، اما کمتر ایمن)

{
  "http.proxyStrictSSL": false
}

این یک راه حل سریع است که تأیید گواهی SSL پروکسی را غیرفعال می‌کند. برای شبکه داخلی شرکتی که پروکسی مورد اعتماد است مناسب است.

راه حل 2: افزودن گواهی CA شرکتی (راه درست)

گواهی ریشه شرکتی (فایل .pem یا .crt) را از مدیر سیستم دریافت کنید و آن را به تنظیمات اضافه کنید:

{
  "http.proxy": "http://corporate-proxy:3128",
  "http.proxyStrictSSL": true,
  "http.proxyCertificates": true
}

همچنین گواهی را به مخزن سیستم‌عامل اضافه کنید — VS Code از گواهی‌های سیستم استفاده می‌کند از نسخه 1.40 به بعد. در ویندوز کافی است گواهی را در «مراکز گواهی‌نامه‌های ریشه معتبر» از طریق certmgr.msc نصب کنید. در لینوکس گواهی را به /usr/local/share/ca-certificates/ اضافه کنید و update-ca-certificates را اجرا کنید.

راه حل 3: متغیر NODE_EXTRA_CA_CERTS

VS Code و افزونه‌های آن بر روی Node.js کار می‌کنند، بنابراین می‌توان گواهی‌های CA اضافی را از طریق متغیر محیطی مشخص کرد:

# Linux/macOS
export NODE_EXTRA_CA_CERTS="/path/to/corporate-ca.pem"

# Windows PowerShell
$env:NODE_EXTRA_CA_CERTS="C:\certs\corporate-ca.pem"

چک‌لیست: VS Code + پروکسی به درستی کار می‌کند

از این چک‌لیست استفاده کنید تا مطمئن شوید که همه چیز به درستی تنظیم شده است یا به سرعت دلیل مشکل را پیدا کنید.

✅ تنظیمات پایه پروکسی

  • در settings.json پارامتر http.proxy با URL صحیح مشخص شده است
  • URL پروکسی شامل طرح است: http:// یا socks5://
  • اگر پروکسی نیاز به تأیید اعتبار دارد — نام کاربری و رمز عبور در URL مشخص شده‌اند
  • VS Code پس از تغییر تنظیمات به طور کامل دوباره راه‌اندازی شده است

✅ SSL و گواهی‌ها

  • اگر پروکسی با بازرسی SSL است — گواهی CA شرکتی نصب شده است
  • یا "http.proxyStrictSSL": false به عنوان یک راه حل موقت تنظیم شده است
  • در خروجی هیچ خطای CERT_UNTRUSTED وجود ندارد

✅ همگام‌سازی تنظیمات

  • دامنه‌های login.microsoftonline.com و vscode.dev از طریق پروکسی در دسترس هستند
  • تأیید اعتبار از طریق حساب مایکروسافت یا GitHub به درستی انجام می‌شود
  • در خروجی → همگام‌سازی تنظیمات هیچ خطای اتصالی وجود ندارد
  • وضعیت همگام‌سازی در نوار وضعیت نماد فعال را نشان می‌دهد

✅ بازار و افزونه‌ها

  • جستجوی افزونه‌ها در بازار کار می‌کند و نتایج را نمایش می‌دهد
  • نصب افزونه بدون خطا به پایان می‌رسد
  • افزونه‌هایی که نیاز به دسترسی شبکه دارند (Copilot، Remote) به درستی کار می‌کنند
  • به‌روزرسانی‌های افزونه‌ها به طور خودکار دانلود می‌شوند

✅ ابزارهای اضافی توسعه‌دهنده

  • npm برای کار از طریق پروکسی تنظیم شده است: npm config set proxy http://proxy:3128
  • git تنظیم شده است: git config --global http.proxy http://proxy:3128
  • pip (اگر از Python استفاده می‌شود): متغیرهای HTTP_PROXY تنظیم شده‌اند

نتیجه‌گیری

تنظیم پروکسی در VS Code یک وظیفه است که یک بار انجام می‌شود و برای همیشه از مشکلاتی مانند بازار متوقف شده، همگام‌سازی تنظیمات غیرعملی و افزونه‌هایی که نمی‌توانند وابستگی‌ها را دانلود کنند، رهایی می‌یابد. نکات کلیدی این مقاله:

  • مطمئن‌ترین روش — تعیین http.proxy در settings.json: برای خود ویرایشگر و اکثر افزونه‌ها کار می‌کند.
  • متغیرهای محیطی (HTTP_PROXY, HTTPS_PROXY) — برای یکسان‌سازی تنظیمات پروکسی برای کل محیط توسعه‌دهنده راحت هستند.
  • پروکسی شرکتی با بازرسی SSL نیاز به غیرفعال کردن proxyStrictSSL یا نصب گواهی CA شرکتی دارد.
  • همگام‌سازی تنظیمات از طریق پروکسی بدون تنظیمات اضافی کار می‌کند — مهم این است که دامنه‌های مایکروسافت و GitHub در دسترس باشند.
  • تشخیص همیشه با خروجی → همگام‌سازی تنظیمات و خروجی → افزونه‌ها آغاز می‌شود — در آنجا همه خطاهای شبکه با کدها قابل مشاهده است.

اگر در محیطی با دسترسی محدود به اینترنت کار می‌کنید یا نیاز به تست برنامه از یک منطقه جغرافیایی خاص دارید، توصیه می‌کنیم از پروکسی دیتاسنتر برای کار پایدار و سریع با ابزارهای توسعه استفاده کنید — آنها سرعت اتصال بالایی را فراهم می‌کنند و برای وظایف فنی مانند دانلود بسته‌ها، همگام‌سازی تنظیمات و کار با مخازن از راه دور بسیار مناسب هستند.

```