Quay lại blog

Proxy cho lập trình viên Iran: cách truy cập GitHub, npm và PyPI dưới lệnh trừng phạt năm 2024

Các nhà phát triển Iran gặp phải việc chặn GitHub, npm và PyPI do các lệnh trừng phạt. Chúng tôi sẽ hướng dẫn cách vượt qua các hạn chế qua proxy và tiếp tục làm việc mà không bị gián đoạn.

📅10 tháng 7, 2026
```html

Các nhà phát triển Iran thường xuyên phải đối mặt với các hạn chế nghiêm ngặt: GitHub chặn tài khoản, các gói npm không thể cài đặt, PyPI trả về lỗi kết nối. Tất cả đều là hậu quả của các lệnh trừng phạt, cắt đứt toàn bộ các quốc gia khỏi cơ sở hạ tầng phát triển cơ bản. Nếu bạn làm việc từ Iran hoặc thuê các chuyên gia Iran, bài viết này sẽ cung cấp cho bạn một giải pháp cụ thể — không có lý thuyết và nước.

Cái gì bị chặn và tại sao

Các lệnh trừng phạt của Mỹ đối với Iran không chỉ áp dụng cho các giao dịch tài chính — chúng còn ảnh hưởng đến các dịch vụ công nghệ. Các công ty thuộc quyền tài phán của Mỹ (hầu hết là toàn bộ ngăn xếp phát triển hiện đại) phải hạn chế quyền truy cập của người dùng từ các quốc gia bị trừng phạt. Kết quả là các nhà phát triển Iran gặp phải các vấn đề sau:

  • GitHub — chặn tài khoản, kho trở nên không khả dụng, Actions không chạy, Copilot không hoạt động.
  • npm (npmjs.com) — khi cố gắng cài đặt các gói qua npm install xuất hiện lỗi kết nối hoặc từ chối truy cập rõ ràng.
  • PyPI (pypi.org)pip install bị treo hoặc trả về lỗi 403.
  • Docker Hub — kéo hình ảnh bị chặn.
  • Cloudflare, AWS, Azure, Google Cloud — một số dịch vụ không khả dụng hoặc hoạt động không ổn định.
  • Stack Overflow, JetBrains, VS Code Marketplace — chặn định kỳ ở cấp độ IP.

Việc chặn xảy ra ở cấp độ địa chỉ IP: nếu IP của bạn thuộc về nhà cung cấp Iran (số AS IRANCELL, Shatel, MCI và các nhà cung cấp khác), yêu cầu sẽ tự động bị từ chối trước khi kiểm tra tài khoản. Đó là lý do tại sao VPN hoặc proxy với IP từ quốc gia khác không phải là một cách lách, mà là cách duy nhất để truy cập vào cơ sở hạ tầng phát triển.

Điều quan trọng là phải hiểu:

Proxy và VPN giải quyết vấn đề ở các cấp độ khác nhau. VPN chuyển hướng toàn bộ lưu lượng của hệ thống — điều này tiện lợi cho trình duyệt, nhưng không thuận tiện cho các công cụ dòng lệnh (git, npm, pip), nơi cần cấu hình chính xác. Proxy cho phép bạn thiết lập việc vượt qua các lệnh trừng phạt chỉ cho công cụ cụ thể mà không ảnh hưởng đến lưu lượng còn lại.

Loại proxy nào phù hợp cho phát triển

Đối với các nhiệm vụ của nhà phát triển — làm việc với các kho, cài đặt các gói, CI/CD — độ ổn định của kết nối, tốc độ và độ sạch của IP là rất quan trọng. Chúng ta sẽ xem xét ba loại proxy chính và cách chúng phù hợp với các kịch bản cụ thể.

Proxy cư trú

Proxy cư trú sử dụng các địa chỉ IP thực tế của người dùng tại nhà từ nhiều quốc gia khác nhau. Đối với GitHub, điều này rất quan trọng: nền tảng này không chỉ phân tích vị trí địa lý của IP mà còn cả danh tiếng của nó. IP từ trung tâm dữ liệu gây nghi ngờ, trong khi IP từ nhà ở Mỹ hoặc châu Âu được coi là người dùng bình thường. Proxy cư trú là lựa chọn đáng tin cậy nhất để làm việc với các tài khoản GitHub một cách thường xuyên.

Proxy trung tâm dữ liệu

Proxy trung tâm dữ liệu — nhanh và rẻ. Chúng phù hợp cho việc cài đặt các gói qua npm và pip: PyPI và npmjs.com không kiểm tra danh tiếng của IP nghiêm ngặt như GitHub. Nếu bạn chỉ cần tải xuống các phụ thuộc trong pipeline CI/CD, proxy trung tâm dữ liệu sẽ hoàn thành nhiệm vụ và có giá rẻ hơn.

Proxy di động

Proxy di động sử dụng IP của các nhà mạng di động (4G/5G). Đây là loại IP "sạch" nhất từ góc độ hệ thống chống gian lận: một IP di động có hàng ngàn người dùng thực sự cùng sử dụng, vì vậy việc chặn nó là không có lợi. Proxy di động là lựa chọn phù hợp nếu bạn đã gặp vấn đề với việc chặn tài khoản GitHub và muốn giảm thiểu rủi ro bị chặn lại.

Cấu hình proxy cho GitHub

GitHub sử dụng hai giao thức để làm việc với các kho: HTTPS và SSH. Cấu hình proxy cho mỗi giao thức được thực hiện khác nhau. Chúng ta sẽ xem xét cả hai tùy chọn.

Proxy cho git qua HTTPS

Đây là cách phổ biến nhất để làm việc với GitHub. Cấu hình được thực hiện thông qua cấu hình git. Mở terminal và thực hiện:

# Cấu hình HTTP-proxy cho git (thay thế host, port, user, password bằng dữ liệu của bạn)
git config --global http.proxy http://user:password@proxy-host:port
git config --global https.proxy http://user:password@proxy-host:port

# Kiểm tra cấu hình
git config --global --get http.proxy

# Nếu proxy không cần xác thực:
git config --global http.proxy http://proxy-host:port

Sau khi cấu hình này, tất cả các lệnh git clone, git push, git pull sẽ đi qua proxy. Nếu bạn cần cấu hình proxy chỉ cho GitHub, không phải cho tất cả các kho:

# Proxy chỉ cho github.com
git config --global http.https://github.com.proxy http://user:password@proxy-host:port

Proxy cho git qua SSH

Kết nối SSH với GitHub hoạt động qua cổng 22 (hoặc 443 như một lựa chọn thay thế). Để proxy hóa lưu lượng SSH, sử dụng tiện ích nc (netcat) hoặc connect. Chỉnh sửa tệp ~/.ssh/config:

Host github.com
  HostName github.com
  User git
  ProxyCommand nc -X connect -x proxy-host:port %h %p
  # Hoặc cho SOCKS5:
  # ProxyCommand nc -X 5 -x proxy-host:port %h %p

Nếu bạn sử dụng Windows, thay vì nc bạn có thể sử dụng connect.exe hoặc cấu hình ProxyCommand qua PuTTY. Trên macOS và Linux, netcat thường đã được cài đặt sẵn.

Cấu hình biến môi trường

Một cách thay thế là sử dụng biến môi trường. Chúng hoạt động không chỉ cho git mà còn cho nhiều công cụ dòng lệnh khác:

# Linux / macOS — thêm vào ~/.bashrc hoặc ~/.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"

Cấu hình proxy cho npm và Node.js

npm có hỗ trợ tích hợp cho proxy. Cấu hình chỉ mất một lệnh và ngay lập tức áp dụng cho tất cả các thao tác cài đặt gói. Điều này đặc biệt quan trọng đối với các nhà phát triển Iran làm việc với ngăn xếp JavaScript/TypeScript: React, Vue, Angular, Next.js — tất cả đều sử dụng tích cực npmjs.com.

# Cấu hình proxy cho npm
npm config set proxy http://user:password@proxy-host:port
npm config set https-proxy http://user:password@proxy-host:port

# Kiểm tra cấu hình hiện tại
npm config get proxy
npm config get https-proxy

# Tắt proxy (nếu cần trở lại kết nối trực tiếp)
npm config delete proxy
npm config delete https-proxy

Các cài đặt được lưu trong tệp ~/.npmrc. Bạn cũng có thể chỉnh sửa tệp này trực tiếp:

# Nội dung ~/.npmrc
proxy=http://user:password@proxy-host:port
https-proxy=http://user:password@proxy-host:port
strict-ssl=false

Yarn và pnpm

Nếu bạn sử dụng Yarn hoặc pnpm, cấu hình tương tự:

# 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) — chỉnh sửa .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

Lời khuyên cho CI/CD:

Nếu bạn sử dụng GitHub Actions, GitLab CI hoặc hệ thống khác, hãy thêm các biến HTTP_PROXYHTTPS_PROXY vào bí mật của dự án. Điều này sẽ cho phép tất cả các bước của pipeline tự động sử dụng proxy.

Cấu hình proxy cho PyPI và pip

Các nhà phát triển Python từ Iran thường xuyên gặp phải việc chặn PyPI: pip sử dụng HTTPS để tải các gói, và nếu IP bị chặn, việc cài đặt sẽ bị treo hoặc báo lỗi. Có một số cách để cấu hình proxy cho pip.

Cách 1: Cờ --proxy khi cài đặt

# Cài đặt một lần qua proxy
pip install requests --proxy http://user:password@proxy-host:port

# Đối với pip3
pip3 install django --proxy http://user:password@proxy-host:port

Cách 2: Tệp cấu hình pip.conf

Để không phải chỉ định proxy cho mỗi lệnh, hãy thêm cài đặt vào tệp cấu hình 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

Cách 3: Biến môi trường

# pip tự động nhận các biến môi trường tiêu chuẩn
export HTTP_PROXY="http://user:password@proxy-host:port"
export HTTPS_PROXY="http://user:password@proxy-host:port"

# Sau đó, pip install thông thường sẽ hoạt động qua proxy
pip install numpy pandas scikit-learn

Poetry và Conda

Nếu bạn sử dụng Poetry để quản lý các phụ thuộc, cấu hình proxy được thực hiện qua các biến môi trường — Poetry tự động kế thừa HTTP_PROXYHTTPS_PROXY. Đối với Conda, hãy thêm vào tệp ~/.condarc:

# ~/.condarc
proxy_servers:
  http: http://user:password@proxy-host:port
  https: http://user:password@proxy-host:port

Các công cụ phát triển khác: Docker, Composer, Maven

Các lệnh chặn không chỉ ảnh hưởng đến GitHub, npm và PyPI. Chúng ta sẽ xem xét cấu hình proxy cho các công cụ phát triển phổ biến khác cũng có thể không khả dụng từ Iran.

Docker

Docker Hub bị chặn cho các IP của Iran. Để thực hiện docker pull, hãy cấu hình proxy trong cấu hình Docker daemon:

# Linux: tạo hoặc chỉnh sửa /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"
  }
}

# Khởi động lại Docker
sudo systemctl restart docker

Trên macOS và Windows, cấu hình proxy cho Docker Desktop được thực hiện qua giao diện đồ họa: Cài đặt → Tài nguyên → Proxy.

Composer (PHP)

# Composer sử dụng các biến môi trường
export HTTP_PROXY="http://user:password@proxy-host:port"
export HTTPS_PROXY="http://user:password@proxy-host:port"

# Hoặc qua cấu hình 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 sử dụng GOPROXY để tải các module
# Có thể chỉ định gương hoặc cấu hình proxy hệ thống
export GOPROXY="https://goproxy.io,direct"
export HTTP_PROXY="http://user:password@proxy-host:port"
export HTTPS_PROXY="http://user:password@proxy-host:port"

An toàn: cách không mất tài khoản trên GitHub

Việc sử dụng proxy giải quyết vấn đề truy cập, nhưng tạo ra một vấn đề mới: nếu bạn đăng nhập vào GitHub từ các địa chỉ IP khác nhau (hôm nay từ Iran, ngày mai qua proxy Mỹ, ngày kia qua proxy châu Âu), hệ thống bảo mật của GitHub có thể chặn tài khoản như một tài khoản đáng ngờ. Đây là cách để tránh điều đó.

Quy tắc về IP cố định

Sử dụng cùng một máy chủ proxy để làm việc với GitHub. Nếu nhà cung cấp proxy của bạn thay đổi IP mỗi khi kết nối (proxy xoay vòng), điều này có thể gây nghi ngờ. Đối với GitHub, proxy tĩnh là tốt nhất — một IP cố định, được gán cho bạn trong thời gian dài.

  • Proxy cư trú tĩnh — một IP nhà ở từ Mỹ hoặc châu Âu, được gán cho bạn. Độ tin cậy tối đa cho GitHub.
  • Proxy xoay vòng — phù hợp cho npm/pip (tải các gói), nhưng không cho việc đăng nhập vào tài khoản GitHub.
  • Không trộn lẫn kết nối trực tiếp và proxy: hoặc luôn qua proxy, hoặc không bao giờ.

Xác thực hai yếu tố

Bật 2FA trên GitHub — điều này sẽ bảo vệ tài khoản ngay cả khi ai đó đánh cắp thông tin đăng nhập của bạn. Sử dụng ứng dụng xác thực (Google Authenticator, Authy), thay vì SMS — SMS có thể không khả dụng từ Iran hoặc hoạt động không ổn định.

Khóa SSH thay vì mật khẩu

Cấu hình khóa SSH để làm việc với GitHub thay vì xác thực HTTPS bằng mật khẩu. Khóa SSH được liên kết với thiết bị, không phải với IP, vì vậy việc thay đổi IP khi sử dụng SSH ít nghiêm trọng hơn đối với hệ thống bảo mật của GitHub.

So sánh các loại proxy cho các nhà phát triển

Tóm tắt lại dưới dạng bảng: loại proxy nào phù hợp nhất cho các nhiệm vụ cụ thể của nhà phát triển từ Iran.

Nhiệm vụ Cư trú Trung tâm dữ liệu Di động
GitHub (tài khoản, push/pull) ✅ Tuyệt vời ⚠️ Rủi ro bị chặn ✅ Tuyệt vời
npm install (cài đặt gói) ✅ Tốt ✅ Tuyệt vời ✅ Tốt
pip install (PyPI) ✅ Tốt ✅ Tuyệt vời ✅ Tốt
Docker Hub (kéo hình ảnh) ✅ Tốt ✅ Tốt ⚠️ Đắt đỏ
Pipeline CI/CD (yêu cầu hàng loạt) ⚠️ Đắt đỏ ✅ Tuyệt vời ❌ Không phù hợp
Tốc độ kết nối Trung bình Cao Trung bình
Rủi ro bị chặn IP Thấp Trung bình Rất thấp
Chi phí Trung bình Thấp Cao

Chiến lược được khuyến nghị

Sơ đồ tối ưu cho nhà phát triển:

  1. Đối với GitHub — proxy cư trú tĩnh từ Mỹ hoặc Đức. Một IP, luôn là một.
  2. Đối với npm/pip/Docker — proxy trung tâm dữ liệu với băng thông tốt. Tốc độ quan trọng hơn danh tiếng của IP.
  3. Đối với trình duyệt và dịch vụ web — proxy cư trú giống nhau hoặc riêng biệt.

Giao thức: HTTP vs SOCKS5

Hầu hết các công cụ phát triển (git, npm, pip) hỗ trợ proxy HTTP/HTTPS. SOCKS5 linh hoạt hơn — nó hoạt động ở cấp độ TCP và phù hợp với bất kỳ giao thức nào, bao gồm cả SSH. Nếu nhà cung cấp proxy của bạn hỗ trợ SOCKS5, hãy sử dụng nó cho các kết nối SSH đến GitHub. Đối với lưu lượng HTTP (npm, pip), gần như không có sự khác biệt.

Kết luận và khuyến nghị

Các lệnh trừng phạt tạo ra những trở ngại thực sự cho các nhà phát triển Iran, nhưng chúng không làm cho công việc trở nên không thể. Một proxy được cấu hình đúng cho phép làm việc đầy đủ với GitHub, cài đặt các gói qua npm và pip, kéo hình ảnh từ Docker Hub — mà không mất tài khoản và không bị chặn liên tục.

Những điểm chính của bài viết:

  • Đối với việc làm việc với GitHub, hãy sử dụng proxy cư trú tĩnh — một IP cố định từ Mỹ hoặc châu Âu.
  • Đối với việc cài đặt các gói (npm, pip, Composer), các proxy trung tâm dữ liệu rẻ hơn với tốc độ tốt sẽ phù hợp.
  • Cấu hình proxy ở cấp độ công cụ (git config, npm config, pip.conf), không chỉ ở cấp độ hệ thống.
  • Không trộn lẫn kết nối trực tiếp và proxy cho một tài khoản GitHub.
  • Bật 2FA và sử dụng khóa SSH để đảm bảo an toàn tối đa cho tài khoản.

Nếu bạn đang tìm kiếm một giải pháp đáng tin cậy để làm việc liên tục với GitHub và các dịch vụ bị chặn khác, chúng tôi khuyên bạn nên xem xét proxy cư trú — chúng cung cấp quyền truy cập ổn định qua các địa chỉ IP thực tế tại nhà, rất hiếm khi bị chặn bởi GitHub và các nền tảng khác.

```