Pengembang Iran secara teratur menghadapi pembatasan yang ketat: GitHub memblokir akun, paket npm tidak dapat diinstal, PyPI memberikan kesalahan koneksi. Semua ini adalah akibat dari sanksi yang memutuskan negara-negara dari infrastruktur dasar pengembangan. Jika Anda bekerja dari Iran atau mempekerjakan spesialis Iran, artikel ini akan memberikan solusi konkret ā tanpa basa-basi dan teori.
Apa yang diblokir dan mengapa
Sanksi AS terhadap Iran tidak hanya mencakup operasi keuangan ā mereka juga mempengaruhi layanan teknologi. Perusahaan yang berada di bawah yurisdiksi AS (yang hampir mencakup seluruh tumpukan pengembangan modern) diwajibkan untuk membatasi akses pengguna dari negara-negara yang terkena sanksi. Akibatnya, pengembang Iran menghadapi masalah berikut:
- GitHub ā memblokir akun, repositori menjadi tidak dapat diakses, Actions tidak berjalan, Copilot tidak berfungsi.
- npm (npmjs.com) ā saat mencoba menginstal paket melalui
npm installmuncul kesalahan koneksi atau penolakan akses yang jelas. - PyPI (pypi.org) ā
pip installmacet atau mengembalikan kesalahan 403. - Docker Hub ā menarik gambar diblokir.
- Cloudflare, AWS, Azure, Google Cloud ā sebagian layanan tidak tersedia atau berfungsi tidak stabil.
- Stack Overflow, JetBrains, VS Code Marketplace ā pemblokiran berkala pada tingkat IP.
Pemblokiran terjadi pada tingkat alamat IP: jika IP Anda milik penyedia Iran (nomor AS IRANCELL, Shatel, MCI, dan lainnya), permintaan secara otomatis ditolak bahkan sebelum akun diperiksa. Itulah sebabnya VPN atau proksi dengan IP dari negara lain bukanlah cara untuk menghindari, tetapi satu-satunya cara yang efektif untuk mendapatkan akses ke infrastruktur pengembangan.
Penting untuk dipahami:
Proksi dan VPN menyelesaikan masalah pada tingkat yang berbeda. VPN mengalihkan semua lalu lintas sistem ā ini nyaman untuk browser, tetapi tidak nyaman untuk alat baris perintah (git, npm, pip), di mana pengaturan yang tepat diperlukan. Proksi memungkinkan Anda mengatur penghindaran sanksi hanya untuk alat tertentu, tanpa mengganggu lalu lintas lainnya.
Jenis proksi apa yang cocok untuk pengembangan
Untuk tugas pengembang ā bekerja dengan repositori, menginstal paket, CI/CD ā stabilitas koneksi, kecepatan, dan kebersihan IP sangat penting. Mari kita bahas tiga jenis proksi utama dan bagaimana mereka cocok untuk skenario tertentu.
Proksi Residensial
Proksi residensial menggunakan alamat IP nyata dari pengguna rumah di berbagai negara. Untuk GitHub, ini sangat penting: platform menganalisis tidak hanya geolokasi IP, tetapi juga reputasinya. IP dari pusat data menimbulkan kecurigaan, sementara IP rumah dari AS atau Eropa dianggap sebagai pengguna biasa. Proksi residensial adalah pilihan yang paling dapat diandalkan untuk bekerja dengan akun GitHub secara berkelanjutan.
Proksi Pusat Data
Proksi pusat data ā cepat dan murah. Mereka cocok untuk menginstal paket melalui npm dan pip: PyPI dan npmjs.com tidak memeriksa reputasi IP seketat GitHub. Jika Anda hanya perlu mengunduh dependensi dalam pipeline CI/CD, proksi pusat data akan menyelesaikan tugas dan lebih murah.
Proksi Seluler
Proksi seluler menggunakan IP dari operator seluler (4G/5G). Ini adalah jenis IP yang paling "bersih" dari sudut pandang sistem anti-fraud: satu IP seluler secara bersamaan digunakan oleh ribuan pengguna nyata, sehingga memblokirnya tidak menguntungkan. Proksi seluler relevan jika Anda sudah mengalami masalah dengan pemblokiran akun GitHub dan ingin meminimalkan risiko pemblokiran ulang.
Pengaturan proksi untuk GitHub
GitHub menggunakan dua protokol untuk bekerja dengan repositori: HTTPS dan SSH. Untuk masing-masing, pengaturan proksi dilakukan dengan cara yang berbeda. Mari kita bahas kedua opsi.
Proksi untuk git melalui HTTPS
Ini adalah cara yang paling umum untuk bekerja dengan GitHub. Pengaturan dilakukan melalui konfigurasi git. Buka terminal dan jalankan:
# Pengaturan proksi HTTP untuk git (ganti host, port, user, password dengan data Anda) git config --global http.proxy http://user:password@proxy-host:port git config --global https.proxy http://user:password@proxy-host:port # Memeriksa pengaturan git config --global --get http.proxy # Jika proksi tanpa otorisasi: git config --global http.proxy http://proxy-host:port
Setelah pengaturan ini, semua perintah git clone, git push, git pull akan melalui proksi. Jika Anda perlu mengatur proksi hanya untuk GitHub, bukan untuk semua repositori:
# Proksi hanya untuk github.com git config --global http.https://github.com.proxy http://user:password@proxy-host:port
Proksi untuk git melalui SSH
Koneksi SSH ke GitHub bekerja melalui port 22 (atau 443 sebagai alternatif). Untuk memproksi lalu lintas SSH, digunakan utilitas nc (netcat) atau connect. Edit file ~/.ssh/config:
Host github.com HostName github.com User git ProxyCommand nc -X connect -x proxy-host:port %h %p # Atau untuk SOCKS5: # ProxyCommand nc -X 5 -x proxy-host:port %h %p
Jika Anda menggunakan Windows, Anda dapat menggunakan connect.exe sebagai pengganti nc atau mengatur ProxyCommand melalui PuTTY. Di macOS dan Linux, netcat biasanya sudah terpasang.
Pengaturan Variabel Lingkungan
Cara alternatif adalah menggunakan variabel lingkungan. Mereka bekerja tidak hanya untuk git, tetapi juga untuk banyak alat baris perintah lainnya:
# Linux / macOS ā tambahkan ke ~/.bashrc atau ~/.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"
Pengaturan proksi untuk npm dan Node.js
npm memiliki dukungan proksi bawaan. Pengaturannya hanya membutuhkan satu perintah dan langsung diterapkan ke semua operasi instalasi paket. Ini sangat penting bagi pengembang Iran yang bekerja dengan tumpukan JavaScript/TypeScript: React, Vue, Angular, Next.js ā semuanya aktif menggunakan npmjs.com.
# Pengaturan proksi untuk npm npm config set proxy http://user:password@proxy-host:port npm config set https-proxy http://user:password@proxy-host:port # Memeriksa konfigurasi saat ini npm config get proxy npm config get https-proxy # Menonaktifkan proksi (jika perlu mengembalikan koneksi langsung) npm config delete proxy npm config delete https-proxy
Pengaturan disimpan dalam file ~/.npmrc. Anda juga dapat mengedit file ini secara langsung:
# Konten ~/.npmrc proxy=http://user:password@proxy-host:port https-proxy=http://user:password@proxy-host:port strict-ssl=false
Yarn dan pnpm
Jika Anda menggunakan Yarn atau pnpm, pengaturannya mirip:
# 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) ā edit .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
Tips untuk CI/CD:
Jika Anda menggunakan GitHub Actions, GitLab CI, atau sistem lain, tambahkan variabel HTTP_PROXY dan HTTPS_PROXY ke rahasia proyek. Ini akan memungkinkan semua langkah pipeline secara otomatis menggunakan proksi.
Pengaturan proksi untuk PyPI dan pip
Pengembang Python dari Iran sering menghadapi pemblokiran PyPI: pip menggunakan HTTPS untuk mengunduh paket, dan jika IP diblokir, instalasi hanya macet atau mengeluarkan kesalahan. Ada beberapa cara untuk mengatur proksi untuk pip.
Metode 1: Flag --proxy saat instalasi
# Instalasi sekali melalui proksi pip install requests --proxy http://user:password@proxy-host:port # Untuk pip3 pip3 install django --proxy http://user:password@proxy-host:port
Metode 2: File konfigurasi pip.conf
Agar tidak perlu menyebutkan proksi setiap kali menjalankan perintah, tambahkan pengaturan ke file konfigurasi 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
Metode 3: Variabel Lingkungan
# pip secara otomatis mengambil variabel lingkungan standar export HTTP_PROXY="http://user:password@proxy-host:port" export HTTPS_PROXY="http://user:password@proxy-host:port" # Setelah itu, pip install biasa akan bekerja melalui proksi pip install numpy pandas scikit-learn
Poetry dan Conda
Jika Anda menggunakan Poetry untuk mengelola dependensi, pengaturan proksi dilakukan melalui variabel lingkungan ā Poetry mewarisi HTTP_PROXY dan HTTPS_PROXY secara otomatis. Untuk Conda, tambahkan ke file ~/.condarc:
# ~/.condarc proxy_servers: http: http://user:password@proxy-host:port https: http://user:password@proxy-host:port
Alat pengembang lainnya: Docker, Composer, Maven
Pemblokiran tidak hanya mempengaruhi GitHub, npm, dan PyPI. Mari kita lihat pengaturan proksi untuk alat pengembangan populer lainnya yang juga mungkin tidak tersedia dari Iran.
Docker
Docker Hub diblokir untuk IP Iran. Untuk melakukan docker pull, atur proksi dalam konfigurasi daemon Docker:
# Linux: buat atau edit /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"
}
}
# Restart Docker
sudo systemctl restart docker
Di macOS dan Windows, pengaturan proksi untuk Docker Desktop dilakukan melalui antarmuka grafis: Settings ā Resources ā Proxies.
Composer (PHP)
# Composer menggunakan variabel lingkungan export HTTP_PROXY="http://user:password@proxy-host:port" export HTTPS_PROXY="http://user:password@proxy-host:port" # Atau melalui konfigurasi 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>
Modul Go
# Go menggunakan GOPROXY untuk mengunduh modul # Anda dapat menentukan cermin atau mengatur proksi sistem export GOPROXY="https://goproxy.io,direct" export HTTP_PROXY="http://user:password@proxy-host:port" export HTTPS_PROXY="http://user:password@proxy-host:port"
Keamanan: cara menjaga akun GitHub Anda
Menggunakan proksi menyelesaikan masalah akses, tetapi menciptakan yang baru: jika Anda masuk ke GitHub dari alamat IP yang berbeda (hari ini dari Iran, besok melalui proksi AS, lusa melalui proksi Eropa), sistem keamanan GitHub dapat memblokir akun sebagai mencurigakan. Berikut cara menghindarinya.
Aturan Konsistensi IP
Gunakan server proksi yang sama untuk bekerja dengan GitHub. Jika penyedia proksi Anda mengubah IP setiap kali terhubung (proksi rotasi), ini dapat menimbulkan kecurigaan. Untuk GitHub, proksi statis adalah yang terbaik ā satu IP yang terikat untuk Anda dalam jangka waktu yang lama.
- Proksi Residensial Statis ā satu IP rumah dari AS atau Eropa yang terikat untuk Anda. Keandalan maksimum untuk GitHub.
- Proksi Rotasi ā cocok untuk npm/pip (pengunduhan paket), tetapi tidak untuk masuk ke akun GitHub.
- Jangan campurkan koneksi langsung dan proksi: baik selalu melalui proksi, atau tidak pernah.
Autentikasi Dua Faktor
Aktifkan 2FA di GitHub ā ini akan melindungi akun bahkan jika seseorang mencuri kredensial Anda. Gunakan aplikasi autentikator (Google Authenticator, Authy), bukan SMS ā SMS mungkin tidak tersedia dari Iran atau berfungsi tidak dapat diandalkan.
Kunci SSH sebagai Pengganti Kata Sandi
Atur kunci SSH untuk bekerja dengan GitHub sebagai pengganti otorisasi HTTPS dengan kata sandi. Kunci SSH terikat pada perangkat, bukan pada IP, sehingga perubahan IP saat menggunakan SSH kurang kritis untuk sistem keamanan GitHub.
Perbandingan jenis proksi untuk pengembang
Mari kita ringkas dalam bentuk tabel: jenis proksi mana yang paling cocok untuk tugas tertentu pengembang dari Iran.
| Tugas | Residensial | Pusat Data | Seluler |
|---|---|---|---|
| GitHub (akun, push/pull) | ā Bagus | ā ļø Risiko pemblokiran | ā Bagus |
| npm install (instalasi paket) | ā Bagus | ā Bagus | ā Bagus |
| pip install (PyPI) | ā Bagus | ā Bagus | ā Bagus |
| Docker Hub (menarik gambar) | ā Bagus | ā Bagus | ā ļø Mahal |
| Pipeline CI/CD (permintaan massal) | ā ļø Mahal | ā Bagus | ā Tidak cocok |
| Kecepatan koneksi | Sedang | Tinggi | Sedang |
| Risiko pemblokiran IP | Rendah | Sedang | Sangat rendah |
| Biaya | Sedang | Rendah | Tinggi |
Strategi yang Direkomendasikan
Skema optimal untuk pengembang:
- Untuk GitHub ā proksi residensial statis dari AS atau Jerman. Satu IP, selalu sama.
- Untuk npm/pip/Docker ā proksi pusat data dengan bandwidth yang baik. Kecepatan lebih penting daripada reputasi IP.
- Untuk browser dan layanan web ā proksi residensial yang sama atau terpisah.
Protokol: HTTP vs SOCKS5
Sebagian besar alat pengembangan (git, npm, pip) mendukung proksi HTTP/HTTPS. SOCKS5 lebih universal ā ia bekerja pada tingkat TCP dan cocok untuk protokol apa pun, termasuk SSH. Jika penyedia proksi Anda mendukung SOCKS5, gunakan untuk koneksi SSH ke GitHub. Untuk lalu lintas HTTP (npm, pip) tidak ada perbedaan yang signifikan.
Kesimpulan dan rekomendasi
Sanksi menciptakan hambatan nyata bagi pengembang Iran, tetapi tidak membuat pekerjaan menjadi tidak mungkin. Proksi yang diatur dengan benar memungkinkan Anda untuk bekerja sepenuhnya dengan GitHub, menginstal paket melalui npm dan pip, menarik gambar dari Docker Hub ā tanpa kehilangan akun dan tanpa pemblokiran yang terus-menerus.
Kesimpulan utama dari artikel ini:
- Untuk bekerja dengan GitHub, gunakan proksi residensial statis ā satu IP tetap dari AS atau Eropa.
- Untuk menginstal paket (npm, pip, Composer), proksi pusat data yang lebih murah dengan kecepatan baik akan cocok.
- Atur proksi pada tingkat alat (
git config,npm config,pip.conf), bukan hanya pada tingkat sistem. - Jangan campurkan koneksi langsung dan proksi untuk satu akun GitHub.
- Aktifkan 2FA dan gunakan kunci SSH untuk keamanan maksimal akun Anda.
Jika Anda mencari solusi yang andal untuk bekerja secara terus-menerus dengan GitHub dan layanan yang diblokir lainnya, kami merekomendasikan untuk memperhatikan proksi residensial ā mereka memberikan akses stabil melalui alamat IP rumah yang nyata, yang sangat jarang terkena pemblokiran oleh GitHub dan platform lainnya.
```