# Ví dụ code proxy datacenter: curl, Python, Node.js và Playwright

> Ví dụ code proxy cho curl, Python requests và aiohttp, Node.js undici và Playwright, HTTP và SOCKS5. RackProxies: từ 1,29 US$ mỗi IP, không cần KYC, crypto.

- URL: https://rackproxies.com/vi/docs/code-examples/
- Cập nhật lần cuối: 2026-10-19
- Publisher: RackProxies (https://rackproxies.com)

Đoạn code sẵn sàng copy cho các client phổ biến nhất, mỗi đoạn đã được kiểm tra cú pháp. Mọi ví dụ đều nhắm tới api.ipify.org, httpbin.org/ip hoặc example.com.

**Trả lời nhanh — Làm sao dùng proxy datacenter trong code?**

Các ví dụ code proxy này truyền một URL `http://USERNAME:PASSWORD@IP:PORT` vào client của bạn: `-x` trong curl, `proxies=` trong Python requests, một `ProxyAgent` trong Node.js, một tùy chọn `proxy` trong Playwright. SOCKS5 dùng `socks5h://`. IP của **RackProxies** hỗ trợ HTTP, HTTPS (CONNECT) và SOCKS5, từ 1,29 US$ mỗi IPv4 riêng trong 30 ngày. Không cần KYC, chỉ crypto.

## Tôi cần đoạn code nào?

*Địa chỉ tài liệu 203.0.113.24 và cổng 8000 trong mọi đoạn code: hãy thay bằng một dòng từ tài khoản của bạn.*

| Client | Proxy HTTP | Proxy SOCKS5 | Gói bổ sung |
| --- | --- | --- | --- |
| curl | `-x http://…` | `-x socks5h://…` | Không có |
| Python requests | `proxies={…}` | URL `socks5h://` | `requests[socks]` cho SOCKS5 |
| Python aiohttp | `proxy=` và `proxy_auth=` | Không tích hợp sẵn | `aiohttp-socks` cho SOCKS5 |
| Node.js fetch | undici `ProxyAgent` | Không tích hợp sẵn | `undici` |
| Node.js https | `https-proxy-agent` | `socks-proxy-agent` | Một trong hai |
| Playwright | `proxy: { server, username, password }` | Dùng HTTP hoặc allowlist | `playwright` |

## Làm sao dùng proxy với curl?

Truyền URL proxy với `-x`. curl tự xử lý đường hầm CONNECT cho các đích `https://`. Mọi đoạn code trên trang này dùng địa chỉ tài liệu `203.0.113.24`; trang [định dạng kết nối](https://rackproxies.com/vi/docs/connection-format/) hướng dẫn cách tạo URL từ dòng của bạn.

*curl: HTTP, SOCKS5, đăng nhập riêng, allowlist*

```bash
# HTTP proxy, HTTPS target (CONNECT tunnel)
curl -x http://USERNAME:PASSWORD@203.0.113.24:8000 https://api.ipify.org

# SOCKS5, hostname resolved by the proxy
curl -x socks5h://USERNAME:PASSWORD@203.0.113.24:8000 https://api.ipify.org

# Login passed separately (no URL-encoding needed)
curl -x http://203.0.113.24:8000 -U 'USERNAME:PASSWORD' https://httpbin.org/ip

# IP allowlist: no login
curl -x http://203.0.113.24:8000 https://api.ipify.org

# Show the proxy handshake and the timings
curl -v -s -o /dev/null -w '%{time_connect} %{time_appconnect} %{time_total}\n' \
  -x http://USERNAME:PASSWORD@203.0.113.24:8000 https://example.com
```

## Làm sao dùng proxy với Python requests?

Truyền cho requests một dictionary `proxies` với cùng URL cho `http` và `https`. Khóa `https` là khóa dùng cho các đích `https://`; giá trị của nó vẫn bắt đầu bằng `http://` vì nó mô tả kết nối tới proxy. requests ném `ProxyError` khi proxy từ chối kết nối hoặc đăng nhập.

*requests qua proxy HTTP, có xử lý lỗi*

```python
import requests  # pip install requests

# From the line 203.0.113.24:8000:USERNAME:PASSWORD in your account
proxy = 'http://USERNAME:PASSWORD@203.0.113.24:8000'
proxies = {'http': proxy, 'https': proxy}

try:
    response = requests.get('https://api.ipify.org', proxies=proxies, timeout=20)
    response.raise_for_status()
    print('Exit IP:', response.text)
except requests.exceptions.ProxyError as error:
    print('Proxy problem (credentials, port or allowlist):', error)
except requests.exceptions.Timeout:
    print('No answer within 20 seconds')
```

*gửi request qua SOCKS5 (pip install "requests[socks]")*

```python
import requests  # pip install "requests[socks]"

# socks5h: the proxy resolves the hostname. Use the SOCKS5 port shown in your account.
proxy = 'socks5h://USERNAME:PASSWORD@203.0.113.24:8000'
proxies = {'http': proxy, 'https': proxy}

response = requests.get('https://httpbin.org/ip', proxies=proxies, timeout=20)
print(response.json())  # {'origin': '203.0.113.24'}
```

*Dùng một Session cho nhiều request qua một IP*

```python
import requests

# A Session reuses connections: faster for many requests through the same IP.
session = requests.Session()
session.proxies.update({
    'http': 'http://USERNAME:PASSWORD@203.0.113.24:8000',
    'https': 'http://USERNAME:PASSWORD@203.0.113.24:8000',
})
session.headers['User-Agent'] = 'my-monitor/1.0 (contact: you@example.com)'

for url in ['https://example.com', 'https://httpbin.org/ip']:
    response = session.get(url, timeout=20)
    print(url, response.status_code, len(response.content), 'bytes')
```

Đặt `User-Agent` ghi tên công cụ của bạn và thông tin liên hệ, như trong ví dụ Session: chủ trang web khi đó có thể liên hệ với bạn thay vì chặn bạn. requests cũng đọc các biến môi trường `HTTP_PROXY` và `HTTPS_PROXY` khi không truyền đối số `proxies`.

## Làm thế nào để dùng proxy với Python aiohttp?

aiohttp nhận proxy theo từng request: `proxy=` cho địa chỉ và `proxy_auth=` cho thông tin đăng nhập. Nó hỗ trợ proxy HTTP, bao gồm CONNECT cho các mục tiêu `https://`. Với SOCKS5 thì cần gói `aiohttp-socks` riêng.

*aiohttp qua proxy HTTP*

```python
import asyncio

import aiohttp  # pip install aiohttp (HTTP proxies; SOCKS needs the aiohttp-socks package)

PROXY = 'http://203.0.113.24:8000'
AUTH = aiohttp.BasicAuth('USERNAME', 'PASSWORD')


async def main():
    timeout = aiohttp.ClientTimeout(total=20)
    async with aiohttp.ClientSession(timeout=timeout) as session:
        async with session.get('https://httpbin.org/ip', proxy=PROXY, proxy_auth=AUTH) as response:
            print(await response.json())


asyncio.run(main())
```

## Làm thế nào để dùng proxy với Node.js?

`fetch` có sẵn của Node không nhận đối số proxy, nên hãy dùng gói `undici` và `ProxyAgent` của nó làm `dispatcher`. Với module `https` cổ điển, dùng `https-proxy-agent` cho proxy HTTP và `socks-proxy-agent` cho SOCKS5. Cả hai đoạn mã đều là ES module: lưu chúng thành các tệp `.mjs`.

*fetch với undici ProxyAgent*

```javascript
// npm install undici
import { ProxyAgent, fetch } from 'undici';

const dispatcher = new ProxyAgent({
  uri: 'http://203.0.113.24:8000',
  token: `Basic ${Buffer.from('USERNAME:PASSWORD').toString('base64')}`,
});

const response = await fetch('https://api.ipify.org', { dispatcher });
console.log('Exit IP:', await response.text());
```

*https với https-proxy-agent và socks-proxy-agent*

```javascript
// npm install https-proxy-agent socks-proxy-agent
import https from 'node:https';
import { HttpsProxyAgent } from 'https-proxy-agent';
import { SocksProxyAgent } from 'socks-proxy-agent';

const httpAgent = new HttpsProxyAgent('http://USERNAME:PASSWORD@203.0.113.24:8000');
// Use the SOCKS5 port shown in your account; socks5h lets the proxy resolve DNS.
const socksAgent = new SocksProxyAgent('socks5h://USERNAME:PASSWORD@203.0.113.24:8000');

for (const agent of [httpAgent, socksAgent]) {
  https.get('https://api.ipify.org', { agent }, (res) => {
    res.setEncoding('utf8');
    res.on('data', (chunk) => console.log('Exit IP:', chunk));
  }).on('error', (err) => console.error('Proxy error:', err.message));
}
```

## Làm thế nào để dùng proxy với Playwright?

Truyền một đối tượng `proxy` vào `chromium.launch()` với server và, riêng biệt, username và password. Dùng dạng HTTP: client SOCKS5 có sẵn của Chromium từ trước đến nay không hỗ trợ xác thực username và password cho proxy SOCKS5. Với allowlist IP, bỏ qua `username` và `password`.

*Playwright (Chromium) qua proxy HTTP*

```javascript
// npm install playwright && npx playwright install chromium
import { chromium } from 'playwright';

const browser = await chromium.launch({
  proxy: { server: 'http://203.0.113.24:8000', username: 'USERNAME', password: 'PASSWORD' },
});
const page = await browser.newPage();
await page.goto('https://api.ipify.org');
console.log('Exit IP:', await page.textContent('body'));
await browser.close();
```

Dùng trình duyệt qua proxy để QA các trang web của chính bạn, kiểm tra quảng cáo và bản địa hóa cùng những công việc hợp pháp tương tự. Lưu ý rằng proxy chỉ thay đổi IP: ngôn ngữ và múi giờ của trình duyệt vẫn là của máy bạn trừ khi bạn đặt chúng trong browser context.

## Làm thế nào để đo độ trễ qua proxy?

Đo thời gian của vài request hoàn chỉnh và lấy giá trị trung vị. Đoạn mã Python bên dưới gửi năm request đến `https://example.com` qua một IP. Chạy nó qua các IP ở những thành phố datacenter khác nhau để so sánh; [hướng dẫn thành phố](https://rackproxies.com/vi/guides/choose-a-datacenter-city/) giải thích giới hạn vật lý cho từng khoảng cách.

*Thời gian request trung vị qua proxy*

```python
import statistics
import time

import requests

proxy = 'http://USERNAME:PASSWORD@203.0.113.24:8000'
timings = []
for _ in range(5):
    start = time.perf_counter()
    requests.get('https://example.com', proxies={'http': proxy, 'https': proxy}, timeout=20)
    timings.append((time.perf_counter() - start) * 1000)

print(f'median {statistics.median(timings):.0f} ms over {len(timings)} requests')
```

## Làm thế nào để dùng cả một danh sách IP?

Tải bản xuất TXT của bạn, chuyển mỗi dòng thành một URL và chọn một IP cho mỗi request: luân phiên qua các trang web, hoặc cùng một IP cho cùng một trang web. [Hướng dẫn xoay vòng so với tĩnh](https://rackproxies.com/vi/guides/rotating-vs-static-datacenter-proxies/) có ví dụ đầy đủ, và trang [định dạng kết nối](https://rackproxies.com/vi/docs/connection-format/) có công cụ chuyển đổi cho cả danh sách. Tôn trọng tốc độ của từng trang web bất kể danh sách của bạn lớn đến đâu: nhiều IP hơn không làm tăng giới hạn của một trang web.

## Câu hỏi về ví dụ mã

### Tại sao tôi dùng http:// cho proxy khi trang web là https://?

Scheme của URL proxy mô tả kết nối của bạn đến proxy, không phải đến trang web. Client của bạn kết nối đến proxy qua TCP thuần, yêu cầu nó mở một tunnel CONNECT, rồi chạy TLS với trang web bên trong đó. Nội dung trang vẫn được mã hóa đầu cuối; chỉ thông tin đăng nhập proxy di chuyển ở dạng đọc được.

### Mật khẩu của tôi có ký tự đặc biệt. Có gì thay đổi?

Ở dạng URL, mã hóa mật khẩu bằng `urllib.parse.quote(password, safe='')` trong Python hoặc `encodeURIComponent(password)` trong JavaScript. Các client nhận thông tin đăng nhập riêng, như `BasicAuth` của aiohttp, `username` và `password` của Playwright, hoặc `-U` của curl, không cần mã hóa. Trang [định dạng kết nối](https://rackproxies.com/vi/docs/connection-format/) liệt kê các ký tự.

### Tại sao requests báo thiếu dependencies để hỗ trợ SOCKS?

Hỗ trợ SOCKS của requests nằm trong một extra tùy chọn. Cài nó bằng `pip install "requests[socks]"`, lệnh này thêm PySocks, và dùng URL `socks5h://` để proxy phân giải tên miền. Proxy HTTP hoạt động mà không cần gói bổ sung nào, nên bạn cũng có thể đổi URL sang `http://` và giữ nguyên dependencies.

### Tôi có thể chạy nhiều request song song qua một IP không?

Có, trong giới hạn sử dụng hợp lý; chúng tôi không công bố giới hạn kết nối cho mỗi IP. Giữ mức song song hợp lý để ổn định cho chính bạn, và giữ tốc độ của từng trang web: các request song song đến cùng một trang web vẫn bị tính vào giới hạn của nó. Tính phí theo IP trong 30 ngày, không theo GB, theo chính sách sử dụng hợp lý.

### Mã của tôi nên gọi URL kiểm tra nào trước?

Gọi `https://api.ipify.org` hoặc `https://httpbin.org/ip`: mỗi cái trả về IP mà nó thấy, nên bạn có thể xác nhận rằng lưu lượng đi ra từ proxy của bạn. Sau đó gọi mục tiêu thực của bạn. Nếu URL kiểm tra hoạt động mà mục tiêu thì không, vấn đề nằm giữa proxy và mục tiêu, không phải trong mã của bạn.

### Tôi có cần ID để lấy proxy cho các ví dụ này không?

Không. Không cần KYC: không cần ID, không cần ảnh selfie, không cần tài liệu để đăng ký, nạp tiền hoặc mua. Nạp tiền trong BTC, USDT, USDC, ETH, SOL, LTC, mua gói từ 1,29 US$, và sao chép các dòng từ tài khoản của bạn vào các đoạn mã. Xem [bảng giá](https://rackproxies.com/vi/pricing/) cho mọi kích cỡ gói.

**Chạy các ví dụ với IP của riêng bạn** 1 IP cho 1,29 US$, bao gồm HTTP và SOCKS5. Không cần KYC, thanh toán bằng crypto. [Xem bảng giá](https://rackproxies.com/vi/pricing/) · [Bắt đầu nhanh](https://rackproxies.com/vi/docs/quickstart/)

## Tài liệu tham khảo

1. [trang man của curl](https://curl.se/docs/manpage.html) — curl project (2026-10-19)
2. [Requests: Proxy và SOCKS](https://requests.readthedocs.io/en/latest/user/advanced/) — Requests (2026-10-19)
3. [aiohttp: Hỗ trợ proxy](https://docs.aiohttp.org/en/stable/client_advanced.html) — aiohttp (2026-10-19)
4. [undici: ProxyAgent](https://undici.nodejs.org/) — Node.js (2026-10-19)
5. [proxy-agents (https-proxy-agent, socks-proxy-agent)](https://github.com/TooTallNate/proxy-agents) — GitHub (2026-10-19)
6. [Playwright: proxy HTTP](https://playwright.dev/docs/network) — Playwright (2026-10-19)

---

RackProxies: RackProxies là nhà cung cấp proxy datacenter riêng: địa chỉ IPv4 thuê theo IP trong 30 ngày, thanh toán bằng crypto, không cần tải ID. Các trang bao gồm 22 quốc gia và 34 thành phố datacenter với dữ liệu mạng công khai.
