Иранские разработчики регулярно сталкиваются с жёсткими ограничениями: GitHub блокирует аккаунты, npm-пакеты не устанавливаются, PyPI отдаёт ошибку соединения. Всё это — последствия санкций, которые отрезают целые страны от базовой инфраструктуры разработки. Если вы работаете из Ирана или нанимаете иранских специалистов, эта статья даст вам конкретное решение — без воды и теории.
Что именно блокируется и почему
Санкции США против Ирана распространяются не только на финансовые операции — они затрагивают и технологические сервисы. Компании, подпадающие под юрисдикцию США (а это практически весь стек современной разработки), обязаны ограничивать доступ пользователям из санкционных стран. В результате иранские разработчики сталкиваются со следующими проблемами:
- GitHub — блокирует аккаунты, репозитории становятся недоступны, Actions не запускаются, Copilot не работает.
- npm (npmjs.com) — при попытке установить пакеты через
npm installвозникают ошибки соединения или явный отказ в доступе. - PyPI (pypi.org) —
pip installзависает или возвращает ошибку 403. - Docker Hub — pull образов заблокирован.
- Cloudflare, AWS, Azure, Google Cloud — часть сервисов недоступна или работает нестабильно.
- Stack Overflow, JetBrains, VS Code Marketplace — периодические блокировки на уровне IP.
Блокировка происходит на уровне IP-адреса: если ваш IP принадлежит иранскому провайдеру (AS-номера IRANCELL, Shatel, MCI и другие), запрос автоматически отклоняется ещё до проверки аккаунта. Именно поэтому VPN или прокси с IP из другой страны — это не обходной манёвр, а единственный рабочий способ получить доступ к инфраструктуре разработки.
Важно понимать:
Прокси и VPN решают проблему на разных уровнях. VPN перенаправляет весь трафик системы — это удобно для браузера, но неудобно для инструментов командной строки (git, npm, pip), где нужна точечная настройка. Прокси позволяет настроить обход санкций только для конкретного инструмента, не трогая остальной трафик.
Какой тип прокси подходит для разработки
Для задач разработчика — работа с репозиториями, установка пакетов, CI/CD — важны стабильность соединения, скорость и чистота IP. Разберём три основных типа прокси и как они подходят под конкретные сценарии.
Резидентные прокси
Резидентные прокси используют реальные IP-адреса домашних пользователей из разных стран. Для GitHub это критически важно: платформа анализирует не только геолокацию IP, но и его репутацию. IP из дата-центра вызывает подозрение, тогда как домашний американский или европейский IP воспринимается как обычный пользователь. Резидентные прокси — наиболее надёжный вариант для работы с аккаунтами GitHub на постоянной основе.
Прокси дата-центров
Прокси дата-центров — быстрые и дешёвые. Они хорошо подходят для установки пакетов через npm и pip: PyPI и npmjs.com не проверяют репутацию IP так строго, как GitHub. Если вам нужно просто скачать зависимости в CI/CD-пайплайне, прокси дата-центра справится с задачей и обойдётся дешевле.
Мобильные прокси
Мобильные прокси используют IP мобильных операторов (4G/5G). Это самый "чистый" тип IP с точки зрения антифрод-систем: за одним мобильным IP одновременно находятся тысячи реальных пользователей, поэтому блокировать его невыгодно. Мобильные прокси актуальны, если у вас уже были проблемы с блокировкой аккаунта GitHub и вы хотите максимально снизить риск повторной блокировки.
Настройка прокси для GitHub
GitHub использует два протокола для работы с репозиториями: HTTPS и SSH. Для каждого из них настройка прокси выполняется по-разному. Рассмотрим оба варианта.
Прокси для git по HTTPS
Это самый распространённый способ работы с GitHub. Настройка делается через конфигурацию git. Откройте терминал и выполните:
# Настройка HTTP-прокси для git (замените host, port, user, password на ваши данные) git config --global http.proxy http://user:password@proxy-host:port git config --global https.proxy http://user:password@proxy-host:port # Проверка настроек git config --global --get http.proxy # Если прокси без авторизации: git config --global http.proxy http://proxy-host:port
После этой настройки все команды git clone, git push, git pull будут идти через прокси. Если нужно настроить прокси только для GitHub, а не для всех репозиториев:
# Прокси только для github.com git config --global http.https://github.com.proxy http://user:password@proxy-host:port
Прокси для git по SSH
SSH-соединение с GitHub работает через порт 22 (или 443 как альтернатива). Для проксирования SSH-трафика используется утилита nc (netcat) или connect. Отредактируйте файл ~/.ssh/config:
Host github.com HostName github.com User git ProxyCommand nc -X connect -x proxy-host:port %h %p # Или для SOCKS5: # ProxyCommand nc -X 5 -x proxy-host:port %h %p
Если вы используете Windows, вместо nc можно использовать connect.exe или настроить ProxyCommand через PuTTY. На macOS и Linux netcat обычно уже установлен.
Настройка переменных окружения
Альтернативный способ — переменные окружения. Они работают не только для git, но и для многих других инструментов командной строки:
# Linux / macOS — добавьте в ~/.bashrc или ~/.zshrc export HTTP_PROXY="http://user:password@proxy-host:port" export HTTPS_PROXY="http://user:password@proxy-host:port" export NO_PROXY="localhost,127.0.0.1" # Windows (PowerShell) $env:HTTP_PROXY = "http://user:password@proxy-host:port" $env:HTTPS_PROXY = "http://user:password@proxy-host:port"
Настройка прокси для npm и Node.js
npm имеет встроенную поддержку прокси. Настройка занимает буквально одну команду и сразу применяется ко всем операциям установки пакетов. Это особенно важно для иранских разработчиков, работающих с JavaScript/TypeScript-стеком: React, Vue, Angular, Next.js — все они активно используют npmjs.com.
# Настройка прокси для npm npm config set proxy http://user:password@proxy-host:port npm config set https-proxy http://user:password@proxy-host:port # Проверка текущей конфигурации npm config get proxy npm config get https-proxy # Отключение прокси (если нужно вернуть прямое соединение) npm config delete proxy npm config delete https-proxy
Настройки сохраняются в файле ~/.npmrc. Вы также можете отредактировать этот файл напрямую:
# Содержимое ~/.npmrc proxy=http://user:password@proxy-host:port https-proxy=http://user:password@proxy-host:port strict-ssl=false
Yarn и pnpm
Если вы используете Yarn или pnpm, настройка аналогична:
# Yarn v1 yarn config set proxy http://user:password@proxy-host:port yarn config set https-proxy http://user:password@proxy-host:port # Yarn v2/v3 (Berry) — редактируйте .yarnrc.yml # httpProxy: "http://user:password@proxy-host:port" # httpsProxy: "http://user:password@proxy-host:port" # pnpm pnpm config set proxy http://user:password@proxy-host:port pnpm config set https-proxy http://user:password@proxy-host:port
Совет для CI/CD:
Если вы используете GitHub Actions, GitLab CI или другую систему, добавьте переменные HTTP_PROXY и HTTPS_PROXY в секреты проекта. Это позволит всем шагам пайплайна автоматически использовать прокси.
Настройка прокси для PyPI и pip
Python-разработчики из Ирана сталкиваются с блокировкой PyPI особенно часто: pip использует HTTPS для загрузки пакетов, и если IP заблокирован, установка просто зависает или выдаёт ошибку. Есть несколько способов настроить прокси для pip.
Способ 1: Флаг --proxy при установке
# Разовая установка через прокси pip install requests --proxy http://user:password@proxy-host:port # Для pip3 pip3 install django --proxy http://user:password@proxy-host:port
Способ 2: Конфигурационный файл pip.conf
Чтобы не указывать прокси при каждой команде, добавьте настройки в конфигурационный файл pip:
# Linux/macOS: ~/.config/pip/pip.conf
# Windows: %APPDATA%\pip\pip.ini
[global]
proxy = http://user:password@proxy-host:port
trusted-host = pypi.org
pypi.python.org
files.pythonhosted.org
Способ 3: Переменные окружения
# pip автоматически подхватывает стандартные переменные окружения export HTTP_PROXY="http://user:password@proxy-host:port" export HTTPS_PROXY="http://user:password@proxy-host:port" # После этого обычный pip install работает через прокси pip install numpy pandas scikit-learn
Poetry и Conda
Если вы используете Poetry для управления зависимостями, настройка прокси выполняется через переменные окружения — Poetry наследует HTTP_PROXY и HTTPS_PROXY автоматически. Для Conda добавьте в файл ~/.condarc:
# ~/.condarc proxy_servers: http: http://user:password@proxy-host:port https: http://user:password@proxy-host:port
Другие инструменты разработчика: Docker, Composer, Maven
Блокировки затрагивают не только GitHub, npm и PyPI. Рассмотрим настройку прокси для других популярных инструментов разработки, которые также могут быть недоступны из Ирана.
Docker
Docker Hub заблокирован для иранских IP. Чтобы выполнять docker pull, настройте прокси в конфигурации Docker daemon:
# Linux: создайте или отредактируйте /etc/docker/daemon.json
{
"proxies": {
"http-proxy": "http://user:password@proxy-host:port",
"https-proxy": "http://user:password@proxy-host:port",
"no-proxy": "localhost,127.0.0.1"
}
}
# Перезапустите Docker
sudo systemctl restart docker
На macOS и Windows настройка прокси для Docker Desktop выполняется через графический интерфейс: Settings → Resources → Proxies.
Composer (PHP)
# Composer использует переменные окружения export HTTP_PROXY="http://user:password@proxy-host:port" export HTTPS_PROXY="http://user:password@proxy-host:port" # Или через конфигурацию Composer composer config --global http-basic.repo.packagist.org user password
Maven (Java)
<!-- ~/.m2/settings.xml -->
<settings>
<proxies>
<proxy>
<id>my-proxy</id>
<active>true</active>
<protocol>http</protocol>
<host>proxy-host</host>
<port>port</port>
<username>user</username>
<password>password</password>
<nonProxyHosts>localhost|127.0.0.1</nonProxyHosts>
</proxy>
</proxies>
</settings>
Go modules
# Go использует GOPROXY для загрузки модулей # Можно указать зеркало или настроить системный прокси export GOPROXY="https://goproxy.io,direct" export HTTP_PROXY="http://user:password@proxy-host:port" export HTTPS_PROXY="http://user:password@proxy-host:port"
Безопасность: как не потерять аккаунт на GitHub
Использование прокси решает проблему доступа, но создаёт новую: если вы входите в GitHub с разных IP-адресов (сегодня из Ирана, завтра через американский прокси, послезавтра через европейский), система безопасности GitHub может заблокировать аккаунт как подозрительный. Вот как этого избежать.
Правило постоянства IP
Используйте один и тот же прокси-сервер для работы с GitHub. Если ваш провайдер прокси меняет IP при каждом подключении (ротационные прокси), это может вызвать подозрения. Для GitHub лучше всего подходят статические прокси — один IP, который закреплён за вами на длительный срок.
- Статический резидентный прокси — один домашний IP из США или Европы, закреплённый за вами. Максимальная надёжность для GitHub.
- Ротационный прокси — подходит для npm/pip (загрузка пакетов), но не для входа в аккаунт GitHub.
- Не смешивайте прямое и прокси-соединение: либо всегда через прокси, либо никогда.
Двухфакторная аутентификация
Включите 2FA на GitHub — это защитит аккаунт даже если кто-то перехватит ваши учётные данные. Используйте приложение-аутентификатор (Google Authenticator, Authy), а не SMS — SMS может быть недоступен из Ирана или работать ненадёжно.
SSH-ключи вместо паролей
Настройте SSH-ключи для работы с GitHub вместо HTTPS-авторизации по паролю. SSH-ключи привязаны к устройству, а не к IP, поэтому смена IP при использовании SSH менее критична для системы безопасности GitHub.
Сравнение типов прокси для разработчиков
Подведём итог в виде таблицы: какой тип прокси лучше подходит для конкретных задач разработчика из Ирана.
| Задача | Резидентный | Дата-центр | Мобильный |
|---|---|---|---|
| GitHub (аккаунт, push/pull) | ✅ Отлично | ⚠️ Риск блокировки | ✅ Отлично |
| npm install (установка пакетов) | ✅ Хорошо | ✅ Отлично | ✅ Хорошо |
| pip install (PyPI) | ✅ Хорошо | ✅ Отлично | ✅ Хорошо |
| Docker Hub (pull образов) | ✅ Хорошо | ✅ Хорошо | ⚠️ Дорого |
| CI/CD пайплайны (массовые запросы) | ⚠️ Дорого | ✅ Отлично | ❌ Не подходит |
| Скорость соединения | Средняя | Высокая | Средняя |
| Риск блокировки IP | Низкий | Средний | Очень низкий |
| Стоимость | Средняя | Низкая | Высокая |
Рекомендуемая стратегия
Оптимальная схема для разработчика:
- Для GitHub — статический резидентный прокси из США или Германии. Один IP, всегда один и тот же.
- Для npm/pip/Docker — прокси дата-центра с хорошей пропускной способностью. Скорость важнее репутации IP.
- Для браузера и веб-сервисов — тот же резидентный прокси или отдельный.
Протоколы: HTTP vs SOCKS5
Большинство инструментов разработки (git, npm, pip) поддерживают HTTP/HTTPS-прокси. SOCKS5 более универсален — он работает на уровне TCP и подходит для любого протокола, включая SSH. Если ваш провайдер прокси поддерживает SOCKS5, используйте его для SSH-подключений к GitHub. Для HTTP-трафика (npm, pip) разницы практически нет.
Заключение и рекомендации
Санкции создают реальные препятствия для иранских разработчиков, но они не делают работу невозможной. Правильно настроенный прокси позволяет полноценно работать с GitHub, устанавливать пакеты через npm и pip, пуллить образы из Docker Hub — без потери аккаунтов и без постоянных блокировок.
Ключевые выводы статьи:
- Для работы с GitHub используйте статический резидентный прокси — один постоянный IP из США или Европы.
- Для установки пакетов (npm, pip, Composer) подойдут более дешёвые прокси дата-центров с хорошей скоростью.
- Настройте прокси на уровне инструментов (
git config,npm config,pip.conf), а не только на уровне системы. - Не смешивайте прямое соединение и прокси для одного аккаунта GitHub.
- Включите 2FA и используйте SSH-ключи для максимальной безопасности аккаунта.
Если вы ищете надёжное решение для постоянной работы с GitHub и другими заблокированными сервисами, рекомендуем обратить внимание на резидентные прокси — они обеспечивают стабильный доступ через реальные домашние IP-адреса, которые крайне редко попадают под блокировки со стороны GitHub и других платформ.