Прокси в Node.js
Способы использовать HTTP- или SOCKS5-прокси в Node.js с короткими примерами и проверкой выхода.
Как заставить npm ставить пакеты через прокси: три настройки, куда их записать, логин и пароль, pnpm и Yarn, как отключить и как проверить, что всё работает.
Прокси меняет только сетевой путь между вашим компьютером и реестром пакетов. Откуда npm скачивает пакеты, определяет отдельная настройка registry, поэтому прокси и зеркало реестра — разные вещи, одно не заменяет другое. Здесь речь о npm, а также коротко о pnpm и Yarn. Прокси внутри кода программы на Node.js описан в отдельном руководстве.
На странице настроек npm перечислены три ключа. proxy — прокси для исходящих http-запросов (тип: null, false или URL, по умолчанию null). https-proxy — прокси для исходящих https-запросов (URL, по умолчанию null); адрес реестра https://registry.npmjs.org — это https, поэтому обычно нужен именно этот ключ. noproxy — домены, для которых прокси не используется; по умолчанию берётся значение переменной NO_PROXY. Там же сказано, что библиотеки под капотом npm учитывают переменные HTTP_PROXY, HTTPS_PROXY и их варианты в нижнем регистре.
npm config set записывает ключ в пользовательский файл настроек, если не указать --location. npm config get выводит значение, так что видно, что сохранено, а npm config delete удаляет ключи из всех файлов настроек. Задайте оба ключа одним HTTP-адресом; значения — это URL, где логин и пароль стоят перед хостом.
npm config set proxy http://USERNAME:PASSWORD@HOST:PORT
npm config set https-proxy http://USERNAME:PASSWORD@HOST:PORT
npm config get https-proxyЗамените HOST, PORT, USERNAME и PASSWORD значениями из «Мои активы».
Если в логине или пароле есть символы вроде @, :, / или %, запишите их в процентном кодировании: @ — %40, : — %3A, / — %2F, % — %25. Именно это требует страница pnpm для адреса прокси с логином и паролем; двоеточие между ними не кодируется. В документации npm такого правила нет, поэтому после настройки проверьте результат командой npm ping (см. проверку ниже). Копировать значения из «Мои активы» надёжнее, чем набирать вручную. Помните, что файл настроек — обычный текст: пароль увидит каждый, кто может прочитать ~/.npmrc.
Те же настройки можно вписать прямо в файл .npmrc. На странице npmrc перечислены четыре файла: проектный в корне проекта (действует только для него), пользовательский ~/.npmrc, глобальный $PREFIX/etc/npmrc и встроенный в сам npm, который изменить нельзя. Они разбираются в порядке приоритета; в примере сказано, что настройка в пользовательском файле перекрывает такую же в глобальном. Там же сказано, что в глобальном режиме проектный файл не читается. В значении можно написать ${NAME}, и npm подставит переменную окружения с таким именем, так что пароль не обязательно хранить в файле.
# .npmrc in the project folder
proxy=http://USERNAME:PASSWORD@HOST:PORT
https-proxy=http://USERNAME:PASSWORD@HOST:PORT
noproxy=localhost,127.0.0.1Замените HOST, PORT, USERNAME и PASSWORD значениями из «Мои активы».
Страница настроек npm называет HTTP_PROXY, HTTPS_PROXY и NO_PROXY (и их варианты в нижнем регистре) переменными, которые учитывают библиотеки под капотом; pnpm по документации тоже обращается к ним. Они удобны для одного сеанса терминала: на диск ничего не пишется, настройка исчезает вместе с окном. В Windows PowerShell вместо export пишут $env:NAME = "value".
export HTTPS_PROXY=http://USERNAME:PASSWORD@HOST:PORT
export HTTP_PROXY=http://USERNAME:PASSWORD@HOST:PORT
export NO_PROXY=localhost,127.0.0.1
npm pingЗамените HOST, PORT, USERNAME и PASSWORD значениями из «Мои активы».
Внутренние и локальные адреса внесите в noproxy (в npm это окончания доменов, принимается и строка через запятую) или в NO_PROXY, и npm будет обращаться к ним напрямую. В pnpm то же называется noProxy: строка через запятую с окончаниями доменов, для которых прокси не используется. Как имя хоста сопоставляется с записью, документация npm не объясняет, поэтому пишите нужный домен полностью и проверяйте.
На странице настроек npm про SOCKS нет ни слова, как и на прочитанных нами страницах pnpm и Yarn, поэтому здесь только адреса HTTP-прокси. Для этих инструментов берите HTTP: при создании прокси в Proxy302 выберите протокол HTTP.
pnpm: настройки httpsProxy и httpProxy (тип url, по умолчанию null) и noProxy (строка через запятую). По документации pnpm, если httpsProxy не задан, проверяется переменная HTTPS_PROXY или https_proxy, так что переменные окружения выше работают и для pnpm; страница настроек добавляет, что настройки прокси читаются из .npmrc. Yarn (современный, Berry): на странице .yarnrc.yml есть httpProxy («прокси для HTTP-запросов») и httpsProxy («прокси для HTTPS-запросов»), в примерах адреса вида http://. Настройки noProxy на этой странице мы не нашли.
httpProxy: "http://USERNAME:PASSWORD@HOST:PORT"
httpsProxy: "http://USERNAME:PASSWORD@HOST:PORT"Замените HOST, PORT, USERNAME и PASSWORD значениями из «Мои активы».
npm config delete удаляет ключи из всех файлов настроек. Затем выполните npm config list: команда показывает все настройки, а с -l ещё и значения по умолчанию. Если прокси всё ещё виден, проверьте переменные окружения и в этом терминале сбросьте HTTP_PROXY, HTTPS_PROXY и NO_PROXY, а также .npmrc в проекте.
npm config delete proxy https-proxy noproxy
npm config listЗдесь ничего не нужно заменять. Выполните обе команды как есть: первая удаляет три настройки, вторая показывает, что осталось.
Выполните npm config get proxy и npm config get https-proxy: они выведут сохранённые значения.
npm ping обращается к настроенному реестру и проверяет аутентификацию. Если путь рабочий, вы увидите строку PING и строку PONG со временем в миллисекундах, при сбое — ошибку.
Вторая команда ниже показывает IP, страну и сеть, которые видят сайты через тот же прокси.
В пустой папке выполните npm init -y и npm install is-odd. Если пакет установился, всё работает.
npm ping
curl -x http://USERNAME:PASSWORD@HOST:PORT https://ipinfo.io/jsonЗамените HOST, PORT, USERNAME и PASSWORD значениями из «Мои активы».
• 407 Proxy Authentication Required: прокси отклонил логин или пароль. Скопируйте их заново и проверьте процентное кодирование.
• npm ping завершается ошибкой или по таймауту: неверные HOST или PORT либо срок аренды закончился. Проверьте тот же адрес командой curl выше.
• Пакеты по-прежнему идут напрямую: выполните npm config list и поищите .npmrc в проекте или переменную окружения, которая перекрывает настройку.
• Пакет из внутреннего реестра компании не ставится: добавьте его домен в noproxy, чтобы npm обращался к нему напрямую.
Для любой команды здесь нужны только хост, порт, логин и пароль прокси Proxy302. npm, pnpm и Yarn принимают HTTP-адрес, поэтому при создании прокси выберите HTTP. Трафик ротационных резидентных прокси оплачивается за ГБ, страна выхода задаётся при создании прокси; HTTP — порт 2222, SOCKS5 — порт 3333 на proxy.proxy302.com. Статический ISP IP фиксирован на весь срок аренды и не ротируется — удобно, если инструмент должен всегда выходить с одного адреса. HTTP или SOCKS5 выбирают при покупке, один IP работает с одним протоколом.
Откройте страницу ротационных резидентных прокси, выберите линию, оставьте протокол HTTP и нажмите «Проверить цену и создать».
Откройте «Мои активы» (раздел консоли со всем, что вы купили) и скопируйте HOST, PORT, USERNAME и PASSWORD. На странице «Подключение» есть готовый пример с вашими данными.
Подставьте значения в команды выше.
Подтвердите выход запросом к https://ipinfo.io/json через прокси.
Из материкового Китая сначала запустите вспомогательную программу на странице «Подключение» и держите её открытой, пока работает прокси.
Бюджетная линия стоит $1,50 за ГБ, $1,35 за ГБ в пакете 100 ГБ и $1,20 за ГБ при 300 ГБ. Статический ISP IP — $0,50 за один день и $7,99 за 30 дней. Бесплатного пробного периода нет, минимальная покупка — 1 ГБ или один IP на один день. Набор доступных локаций меняется ежедневно.
Да. Настройка registry определяет, откуда npm скачивает, а настройки прокси — по какому сетевому пути. Они независимы.
Адрес реестра — https, поэтому важнее всего https-proxy. Проще всего задать оба ключа одним адресом.
Работают пользовательский и глобальный файлы настроек и переменные окружения. Проектный .npmrc, по документации npmrc, в глобальном режиме не читается.
В прочитанных нами страницах npm, pnpm и Yarn про SOCKS ничего нет. Используйте адрес HTTP-прокси.
Официальная документация · Проверено:
Read on 2 November 2026: proxy is the proxy for outgoing http requests (null, false or URL, default null); https-proxy is the proxy for outgoing https requests (null or URL, default null); noproxy is domain extensions that should not use any proxy, default the value of NO_PROXY, a comma-delimited string is accepted; HTTP_PROXY/HTTPS_PROXY and lower-case forms are honored by the libraries underneath.
SOCKS is not mentioned. The page does not say how host names are matched against noproxy entries or that special characters must be percent-encoded.
Официальная документация · Проверено:
Read on 2 November 2026: four files (per-project .npmrc in the project root, per-user ~/.npmrc, global $PREFIX/etc/npmrc, built-in); options are resolved in priority order and a user-file setting overrides the global file; the project file is not read in global mode; ${VARIABLE_NAME} inserts an environment variable, ${VARIABLE_NAME?} gives an empty string if undefined.
Официальная документация · Проверено:
Read on 2 November 2026: set writes keys to the user config unless --location is passed; get echoes values; delete removes keys from all config files; list shows all settings and -l adds defaults; --location takes global, user or project.
Официальная документация · Проверено:
Read on 2 November 2026: pings the configured or given registry and verifies authentication; success prints "npm notice PING <registry>" and "npm notice PONG <time>ms"; failure prints an error such as E404.
Официальная документация · Проверено:
Read on 2 November 2026: httpsProxy and httpProxy (type url, default null) and noProxy (comma-separated string of domain extensions the proxy should not be used for); httpsProxy falls back to HTTPS_PROXY/https_proxy; a proxy URL with a username and password must be URL-encoded, with the colon between them not encoded.
Официальная документация · Проверено:
Read on 2 November 2026: lists httpsProxy, httpProxy and noProxy under network settings and says that proxy settings are read from .npmrc files.
Официальная документация · Проверено:
Read on 2 November 2026: httpProxy ("Proxy to use when making an HTTP request") and httpsProxy ("Define a proxy to use when making an HTTPS request"), examples use http://proxy:4040.
No noProxy entry and no mention of SOCKS were found on the page. Yarn 1 (Classic) was not checked.
Наблюдение за продуктом · Проверено:
Product facts file of the site (values checked against the console, the backend and the price table on 18-19 October 2026): products, prices in US$ (1 PTC = US$1), lease terms, protocols and ports, countries, quantity limits, no free trial.
Создайте аккаунт, пополните баланс и выберите ротируемый резидентный, статический ISP или дата-центр IP — настроить его в браузере можно за несколько минут.