Les développeurs iraniens font régulièrement face à des restrictions sévères : GitHub bloque des comptes, les paquets npm ne s'installent pas, PyPI renvoie une erreur de connexion. Tout cela est le résultat des sanctions qui coupent des pays entiers de l'infrastructure de développement de base. Si vous travaillez depuis l'Iran ou si vous embauchez des spécialistes iraniens, cet article vous fournira une solution concrète — sans blabla ni théorie.
Qu'est-ce qui est bloqué et pourquoi
Les sanctions américaines contre l'Iran ne se limitent pas aux opérations financières — elles touchent également les services technologiques. Les entreprises sous juridiction américaine (et presque toute l'infrastructure moderne de développement) doivent restreindre l'accès aux utilisateurs des pays sous sanctions. En conséquence, les développeurs iraniens rencontrent les problèmes suivants :
- GitHub — bloque les comptes, les dépôts deviennent inaccessibles, les Actions ne s'exécutent pas, Copilot ne fonctionne pas.
- npm (npmjs.com) — lors de la tentative d'installation de paquets via
npm install, des erreurs de connexion ou un refus d'accès explicite se produisent. - PyPI (pypi.org) —
pip installse fige ou renvoie une erreur 403. - Docker Hub — le tirage d'images est bloqué.
- Cloudflare, AWS, Azure, Google Cloud — certains services sont inaccessibles ou fonctionnent de manière instable.
- Stack Overflow, JetBrains, VS Code Marketplace — blocages périodiques au niveau IP.
Le blocage se produit au niveau de l'adresse IP : si votre IP appartient à un fournisseur iranien (numéros AS IRANCELL, Shatel, MCI et autres), la demande est automatiquement rejetée avant même la vérification du compte. C'est pourquoi un VPN ou un proxy avec une IP d'un autre pays n'est pas une solution de contournement, mais le seul moyen fonctionnel d'accéder à l'infrastructure de développement.
Il est important de comprendre :
Les proxies et les VPN résolvent le problème à différents niveaux. Un VPN redirige tout le trafic système — c'est pratique pour le navigateur, mais peu pratique pour les outils en ligne de commande (git, npm, pip), où une configuration précise est nécessaire. Un proxy permet de configurer le contournement des sanctions uniquement pour un outil spécifique, sans toucher au reste du trafic.
Quel type de proxy convient au développement
Pour les tâches de développement — travail avec des dépôts, installation de paquets, CI/CD — la stabilité de la connexion, la vitesse et la propreté de l'IP sont importantes. Examinons trois types principaux de proxies et comment ils conviennent à des scénarios spécifiques.
Proxies résidentiels
Les proxies résidentiels utilisent de vraies adresses IP d'utilisateurs domestiques de différents pays. Pour GitHub, cela est crucial : la plateforme analyse non seulement la géolocalisation de l'IP, mais aussi sa réputation. Une IP d'un centre de données suscite des soupçons, tandis qu'une IP domestique américaine ou européenne est perçue comme un utilisateur ordinaire. Les proxies résidentiels sont l'option la plus fiable pour travailler avec des comptes GitHub de manière régulière.
Proxies de centre de données
Les proxies de centre de données sont rapides et bon marché. Ils conviennent bien pour l'installation de paquets via npm et pip : PyPI et npmjs.com ne vérifient pas la réputation de l'IP aussi strictement que GitHub. Si vous devez simplement télécharger des dépendances dans un pipeline CI/CD, un proxy de centre de données fera le travail et coûtera moins cher.
Proxies mobiles
Les proxies mobiles utilisent des IP de fournisseurs de services mobiles (4G/5G). C'est le type d'IP le plus "propre" du point de vue des systèmes anti-fraude : derrière une seule IP mobile se trouvent simultanément des milliers d'utilisateurs réels, donc le bloquer n'est pas rentable. Les proxies mobiles sont pertinents si vous avez déjà eu des problèmes de blocage de compte GitHub et que vous souhaitez minimiser le risque de blocage répétitif.
Configuration du proxy pour GitHub
GitHub utilise deux protocoles pour travailler avec des dépôts : HTTPS et SSH. Pour chacun d'eux, la configuration du proxy se fait différemment. Examinons les deux options.
Proxy pour git via HTTPS
C'est la méthode la plus courante pour travailler avec GitHub. La configuration se fait via la configuration de git. Ouvrez le terminal et exécutez :
# Configuration du proxy HTTP pour git (remplacez host, port, user, password par vos données) git config --global http.proxy http://user:password@proxy-host:port git config --global https.proxy http://user:password@proxy-host:port # Vérification des paramètres git config --global --get http.proxy # Si le proxy n'a pas d'autorisation : git config --global http.proxy http://proxy-host:port
Après cette configuration, toutes les commandes git clone, git push, git pull passeront par le proxy. Si vous devez configurer le proxy uniquement pour GitHub, et non pour tous les dépôts :
# Proxy uniquement pour github.com git config --global http.https://github.com.proxy http://user:password@proxy-host:port
Proxy pour git via SSH
La connexion SSH à GitHub fonctionne via le port 22 (ou 443 comme alternative). Pour le proxy du trafic SSH, on utilise l'outil nc (netcat) ou connect. Modifiez le fichier ~/.ssh/config :
Host github.com HostName github.com User git ProxyCommand nc -X connect -x proxy-host:port %h %p # Ou pour SOCKS5 : # ProxyCommand nc -X 5 -x proxy-host:port %h %p
Si vous utilisez Windows, au lieu de nc, vous pouvez utiliser connect.exe ou configurer ProxyCommand via PuTTY. Sur macOS et Linux, netcat est généralement déjà installé.
Configuration des variables d'environnement
Une méthode alternative consiste à utiliser des variables d'environnement. Elles fonctionnent non seulement pour git, mais aussi pour de nombreux autres outils en ligne de commande :
# Linux / macOS — ajoutez dans ~/.bashrc ou ~/.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"
Configuration du proxy pour npm et Node.js
npm a un support intégré pour les proxies. La configuration prend littéralement une seule commande et s'applique immédiatement à toutes les opérations d'installation de paquets. Cela est particulièrement important pour les développeurs iraniens travaillant avec la pile JavaScript/TypeScript : React, Vue, Angular, Next.js — tous utilisent activement npmjs.com.
# Configuration du proxy pour npm npm config set proxy http://user:password@proxy-host:port npm config set https-proxy http://user:password@proxy-host:port # Vérification de la configuration actuelle npm config get proxy npm config get https-proxy # Désactivation du proxy (si vous devez revenir à une connexion directe) npm config delete proxy npm config delete https-proxy
Les paramètres sont enregistrés dans le fichier ~/.npmrc. Vous pouvez également modifier ce fichier directement :
# Contenu de ~/.npmrc proxy=http://user:password@proxy-host:port https-proxy=http://user:password@proxy-host:port strict-ssl=false
Yarn et pnpm
Si vous utilisez Yarn ou pnpm, la configuration est similaire :
# 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) — modifiez .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
Conseil pour CI/CD :
Si vous utilisez GitHub Actions, GitLab CI ou un autre système, ajoutez les variables HTTP_PROXY et HTTPS_PROXY dans les secrets du projet. Cela permettra à toutes les étapes du pipeline d'utiliser automatiquement le proxy.
Configuration du proxy pour PyPI et pip
Les développeurs Python d'Iran rencontrent souvent des blocages de PyPI : pip utilise HTTPS pour télécharger des paquets, et si l'IP est bloquée, l'installation se fige ou renvoie une erreur. Il existe plusieurs façons de configurer un proxy pour pip.
Méthode 1 : Le drapeau --proxy lors de l'installation
# Installation ponctuelle via un proxy pip install requests --proxy http://user:password@proxy-host:port # Pour pip3 pip3 install django --proxy http://user:password@proxy-host:port
Méthode 2 : Fichier de configuration pip.conf
Pour ne pas avoir à spécifier le proxy à chaque commande, ajoutez les paramètres dans le fichier de configuration 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
Méthode 3 : Variables d'environnement
# pip récupère automatiquement les variables d'environnement standard export HTTP_PROXY="http://user:password@proxy-host:port" export HTTPS_PROXY="http://user:password@proxy-host:port" # Après cela, pip install fonctionne via le proxy pip install numpy pandas scikit-learn
Poetry et Conda
Si vous utilisez Poetry pour gérer les dépendances, la configuration du proxy se fait via les variables d'environnement — Poetry hérite automatiquement de HTTP_PROXY et HTTPS_PROXY. Pour Conda, ajoutez dans le fichier ~/.condarc :
# ~/.condarc proxy_servers: http: http://user:password@proxy-host:port https: http://user:password@proxy-host:port
Autres outils de développement : Docker, Composer, Maven
Les blocages touchent non seulement GitHub, npm et PyPI. Examinons la configuration du proxy pour d'autres outils de développement populaires qui peuvent également être inaccessibles depuis l'Iran.
Docker
Docker Hub est bloqué pour les IP iraniennes. Pour exécuter docker pull, configurez le proxy dans la configuration du démon Docker :
# Linux : créez ou modifiez /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"
}
}
# Redémarrez Docker
sudo systemctl restart docker
Sur macOS et Windows, la configuration du proxy pour Docker Desktop se fait via l'interface graphique : Paramètres → Ressources → Proxies.
Composer (PHP)
# Composer utilise des variables d'environnement export HTTP_PROXY="http://user:password@proxy-host:port" export HTTPS_PROXY="http://user:password@proxy-host:port" # Ou via la configuration de 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>
Modules Go
# Go utilise GOPROXY pour télécharger des modules # Vous pouvez spécifier un miroir ou configurer un proxy système export GOPROXY="https://goproxy.io,direct" export HTTP_PROXY="http://user:password@proxy-host:port" export HTTPS_PROXY="http://user:password@proxy-host:port"
Sécurité : comment ne pas perdre son compte GitHub
L'utilisation de proxies résout le problème d'accès, mais en crée un nouveau : si vous vous connectez à GitHub avec différentes adresses IP (aujourd'hui depuis l'Iran, demain via un proxy américain, après-demain via un proxy européen), le système de sécurité de GitHub peut bloquer le compte comme suspect. Voici comment éviter cela.
Règle de constance de l'IP
Utilisez le même serveur proxy pour travailler avec GitHub. Si votre fournisseur de proxy change d'IP à chaque connexion (proxies rotatifs), cela peut susciter des soupçons. Pour GitHub, les proxies statiques sont les plus adaptés — une seule IP qui vous est attribuée pour une longue période.
- Proxy résidentiel statique — une IP domestique des États-Unis ou d'Europe, qui vous est attribuée. Fiabilité maximale pour GitHub.
- Proxy rotatif — convient pour npm/pip (téléchargement de paquets), mais pas pour se connecter à un compte GitHub.
- Ne mélangez pas connexion directe et proxy : soit toujours via proxy, soit jamais.
Authentification à deux facteurs
Activez la 2FA sur GitHub — cela protégera votre compte même si quelqu'un intercepte vos identifiants. Utilisez une application d'authentification (Google Authenticator, Authy) plutôt que les SMS — les SMS peuvent être inaccessibles depuis l'Iran ou fonctionner de manière peu fiable.
Clés SSH au lieu de mots de passe
Configurez des clés SSH pour travailler avec GitHub au lieu d'une authentification HTTPS par mot de passe. Les clés SSH sont liées à l'appareil, et non à l'IP, donc le changement d'IP lors de l'utilisation de SSH est moins critique pour le système de sécurité de GitHub.
Comparaison des types de proxy pour les développeurs
Résumons sous forme de tableau : quel type de proxy convient le mieux à des tâches spécifiques pour un développeur iranien.
| Tâche | Résidentiel | Centre de données | Mobile |
|---|---|---|---|
| GitHub (compte, push/pull) | ✅ Excellent | ⚠️ Risque de blocage | ✅ Excellent |
| npm install (installation de paquets) | ✅ Bon | ✅ Excellent | ✅ Bon |
| pip install (PyPI) | ✅ Bon | ✅ Excellent | ✅ Bon |
| Docker Hub (tirage d'images) | ✅ Bon | ✅ Bon | ⚠️ Cher |
| Pipeline CI/CD (requêtes massives) | ⚠️ Cher | ✅ Excellent | ❌ Pas adapté |
| Vitesse de connexion | Moyenne | Élevée | Moyenne |
| Risque de blocage IP | Faible | Moyen | Très faible |
| Coût | Moyen | Faible | Élevé |
Stratégie recommandée
Schéma optimal pour le développeur :
- Pour GitHub — un proxy résidentiel statique des États-Unis ou d'Allemagne. Une IP, toujours la même.
- Pour npm/pip/Docker — un proxy de centre de données avec une bonne bande passante. La vitesse est plus importante que la réputation de l'IP.
- Pour le navigateur et les services web — le même proxy résidentiel ou un séparé.
Protocoles : HTTP vs SOCKS5
La plupart des outils de développement (git, npm, pip) prennent en charge les proxies HTTP/HTTPS. SOCKS5 est plus polyvalent — il fonctionne au niveau TCP et convient à tout protocole, y compris SSH. Si votre fournisseur de proxy prend en charge SOCKS5, utilisez-le pour les connexions SSH à GitHub. Pour le trafic HTTP (npm, pip), il n'y a pratiquement pas de différence.
Conclusion et recommandations
Les sanctions créent de réels obstacles pour les développeurs iraniens, mais elles ne rendent pas le travail impossible. Un proxy correctement configuré permet de travailler pleinement avec GitHub, d'installer des paquets via npm et pip, de tirer des images depuis Docker Hub — sans perdre de comptes et sans blocages constants.
Points clés de l'article :
- Pour travailler avec GitHub, utilisez un proxy résidentiel statique — une IP permanente des États-Unis ou d'Europe.
- Pour l'installation de paquets (npm, pip, Composer), des proxies de centre de données moins chers avec une bonne vitesse conviennent.
- Configurez le proxy au niveau des outils (
git config,npm config,pip.conf), et pas seulement au niveau du système. - Ne mélangez pas connexion directe et proxy pour un même compte GitHub.
- Activez la 2FA et utilisez des clés SSH pour une sécurité maximale de votre compte.
Si vous recherchez une solution fiable pour un travail constant avec GitHub et d'autres services bloqués, nous vous recommandons de vous intéresser aux proxies résidentiels — ils offrent un accès stable via de vraies adresses IP domestiques, qui sont très rarement bloquées par GitHub et d'autres plateformes.
```