# Proxy cho Python requests: dùng proxy ISP tĩnh | ProxyJam

Cách đặt proxy trong Python requests: cho từng request, cho cả session và qua SOCKS5 với DNS phân giải từ xa, kèm code đã chạy thử cho một địa chỉ ISP tĩnh.

- Canonical: https://proxyjam.com/vi/integrations/python-requests/
- Updated: 2026-10-23
- Language: vi

Trỏ requests tới một địa chỉ ISP tĩnh: một IP duy nhất trên mạng của một nhà cung cấp internet được nêu tên, giữ nguyên trong kỳ bạn trả tiền. Code bên dưới đã được chạy thử với một proxy có xác thực trước khi đăng.


Truyền một dictionary proxies có cả hai khóa http và https, mỗi khóa đặt là http://USERNAME:PASSWORD@HOST:PORT, và requests sẽ gửi lời gọi qua proxy; các đích HTTPS đi qua proxy dưới dạng tunnel. Với SOCKS5, hãy cài requests[socks], chuyển proxy sang SOCKS5 trên đơn hàng và dùng scheme socks5h, để proxy phân giải tên miền thay cho máy của bạn.


## Đặt proxy trong Python requests

1. **Sao chép bốn giá trị từ đơn hàng** Host, port, tên đăng nhập và mật khẩu, lấy từ mục Proxy của tôi trong bảng điều khiển hoặc từ đơn hàng trong API. Mỗi địa chỉ có bốn giá trị riêng; không có gateway dùng chung.
2. **Tạo một URL proxy** `http://USERNAME:PASSWORD@HOST:PORT`. Nếu mật khẩu chứa `/`, `?`, `#` hoặc `%`, hãy mã hóa URL cho nó trước bằng `urllib.parse.quote(password, safe="")`.
3. **Đặt cho cả hai scheme** Gán cùng một URL cho khóa `http` và khóa `https`. Nếu chỉ đặt `http`, mọi request HTTPS sẽ bỏ qua proxy và đi ra từ chính địa chỉ của bạn.
4. **Kiểm tra địa chỉ đi ra một lần** Gửi request tới một trang hiển thị IP của bên gọi, hoặc mở [What Is My IP](/vi/what-is-my-ip/) qua cùng proxy đó, và xác nhận đó là địa chỉ bạn đã mua.
5. **Chạy tác vụ với timeout** Luôn truyền `timeout=`: theo mặc định requests chờ vô thời hạn, và khi đó một kết nối bị treo trông như một script bị đứng.

## Code đã chạy thử cho requests

Mỗi mẫu kết nối qua proxy HTTP bằng tên đăng nhập và mật khẩu, trừ mẫu SOCKS5: mẫu này cần chuyển proxy sang SOCKS5 trước, sau đó đơn hàng hiển thị port mới và thông tin đăng nhập mới để dùng. Thay bốn giá trị viết hoa bằng giá trị của đơn hàng của bạn.

### Từng request

Truyền proxy cho một lời gọi.

```
import requests

# The four values come with your order (dashboard or API)
proxy = "http://USERNAME:PASSWORD@HOST:PORT"

response = requests.get(
    "https://example.com/",
    proxies={"http": proxy, "https": proxy},
    timeout=30,
)
response.raise_for_status()
print(response.status_code)
```

### Session

Đặt proxy một lần cho mọi lời gọi trong một session.

```
import requests

proxy = "http://USERNAME:PASSWORD@HOST:PORT"

with requests.Session() as session:
    # HTTP_PROXY / HTTPS_PROXY in the environment would override
    # session.proxies; this makes the session use only its own setting.
    session.trust_env = False
    session.proxies.update({"http": proxy, "https": proxy})
    response = session.get("https://example.com/", timeout=30)
    response.raise_for_status()
    print(response.status_code)
```

### SOCKS5

SOCKS5 với tên miền được phân giải tại proxy.

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

# Switch the proxy to SOCKS5 first; use the values the order then shows.
# socks5h: the proxy resolves the hostname, not your machine.
proxy = "socks5h://USERNAME:PASSWORD@HOST:PORT"

response = requests.get(
    "https://example.com/",
    proxies={"http": proxy, "https": proxy},
    timeout=30,
)
response.raise_for_status()
print(response.status_code)
```


## Có thể đặt proxy ở đâu trong requests

|  | Phạm vi | Thông tin đăng nhập | Khi nào dùng |
|---|---|---|---|
| proxies= trên một lời gọi | Chỉ request đó | Trong URL | Script có vài lời gọi |
| Session.proxies | Mọi request của session | Trong URL | Mọi thứ dài hơn, với trust_env đặt thành False |
| HTTP_PROXY và HTTPS_PROXY | Mọi lời gọi requests trong tiến trình | Trong URL | Code bạn không sửa được; NO_PROXY liệt kê các host cần bỏ qua |
| URL socks5h:// | Phạm vi nơi nó được đặt | Trong URL | Khi tên miền cần được phân giải tại proxy |

Đọc từ tài liệu của requests và kiểm tra bằng các mẫu code trên trang này với một proxy có xác thực chạy cục bộ. Khi đặt nhiều chỗ cùng lúc, tham số proxies trên lời gọi được ưu tiên hơn biến môi trường, còn biến môi trường được ưu tiên hơn Session.proxies, trừ khi session đặt trust_env thành False như mẫu Session.


## requests kết nối tới cái gì

- **Giao thức:** HTTP (mang được cả HTTPS) hoặc SOCKS5, chuyển đổi trên đơn hàng
- **Xác thực:** Tên đăng nhập và mật khẩu, hoặc danh sách IP cho phép đặt qua API
- **Địa chỉ:** Một IP tĩnh trong suốt kỳ hạn, trên mạng của một nhà cung cấp internet được nêu tên
- **Xoay vòng:** Không có: mọi request dùng cùng một địa chỉ

## Những gì hay sai khi dùng requests với proxy

### Chỉ đặt khóa http

Tên khóa chỉ scheme của đích, không phải của proxy. Một dictionary chỉ có http sẽ định tuyến HTTP thường và để mọi lời gọi HTTPS đi thẳng ra ngoài, không có lỗi nào báo cho bạn.

### Dùng socks5 trong khi cần socks5h

Với socks5, máy của bạn phân giải tên miền và đưa cho proxy một IP. Với socks5h, proxy phân giải tên miền, nên truy vấn và câu trả lời đến từ mạng của proxy, điều này quan trọng với các trang trả lời theo vị trí.

### Mật khẩu làm hỏng URL

Dấu gạch chéo, dấu hỏi hoặc dấu thăng trong mật khẩu làm URL bị cắt ngắn, và requests báo lỗi trước khi tới được proxy; dấu phần trăm thì bị giải mã như một chuỗi thoát. Hãy mã hóa URL cho mật khẩu, hoặc dùng xác thực bằng danh sách IP cho phép và bỏ thông tin đăng nhập ra.

### Một biến môi trường bị quên

requests đọc HTTP_PROXY, HTTPS_PROXY và NO_PROXY trừ khi bạn đặt trust_env thành False trên session, và các biến này ghi đè Session.proxies. Một biến cũ còn sót trên máy chủ có thể đưa lưu lượng của session tới nơi bạn không định, hoặc đi vòng qua proxy.


## Câu hỏi về proxy trong Python requests

### Làm sao dùng proxy có xác thực trong Python requests?

Đặt tên đăng nhập và mật khẩu vào URL proxy, http://USERNAME:PASSWORD@HOST:PORT, và truyền nó cho cả khóa http lẫn https. requests gửi thông tin đăng nhập tới proxy, và proxy trả về 407 nếu chúng sai. Hãy mã hóa mật khẩu có chứa ký tự dành riêng, hoặc dùng danh sách IP cho phép thay thế.

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

Cài gói bổ sung bằng pip install requests[socks], chuyển chính proxy sang SOCKS5 trên đơn hàng, rồi dùng port và thông tin đăng nhập mà đơn hàng hiển thị sau đó trong một URL socks5h://. Chỉ đổi scheme thôi là chưa đủ: một địa chỉ đang đặt HTTP sẽ không trả lời SOCKS5 cho đến khi được chuyển.

### Có thể dùng xác thực bằng danh sách IP cho phép thay cho mật khẩu không?

Có. Thêm địa chỉ IPv4 công khai nơi script của bạn chạy vào danh sách IP cho phép của proxy bằng một lời gọi API, PUT /orders/ORDER_ID/whitelist, hoặc qua máy chủ MCP; bảng điều khiển hiện chưa có chức năng cho việc này. Khi đó proxy chấp nhận kết nối từ địa chỉ đó mà không cần thông tin đăng nhập, qua HTTP và qua SOCKS5, và URL trở thành http://HOST:PORT. Khi danh sách đang được đặt, proxy chỉ chấp nhận các địa chỉ có trong danh sách, còn tên đăng nhập và mật khẩu ngừng hoạt động với đơn hàng đó; gửi một danh sách rỗng sẽ tắt danh sách cho phép, và đăng nhập bằng mật khẩu hoạt động trở lại.

### Địa chỉ có xoay vòng giữa các request không?

Không. Proxy ISP tĩnh là một địa chỉ trong suốt kỳ bạn trả tiền, và mọi request bạn gửi qua nó đều đi ra từ địa chỉ đó. Nếu một tác vụ cần địa chỉ khác nhau cho mỗi request, đó là một pool xoay vòng, thứ chúng tôi chưa bán.

### Làm sao kiểm tra một trang web thấy IP nào?

Gửi request qua cùng proxy tới một trang trả lại địa chỉ của bên gọi, hoặc mở What Is My IP từ một trình duyệt đã đặt proxy đó. Nếu trang hiển thị địa chỉ của chính bạn, nhiều khả năng đang thiếu khóa https.

### Có thể dùng proxy vào việc gì?

Kiểm thử website của chính bạn theo vùng, kiểm tra chất lượng, xác minh quảng cáo, nghiên cứu giá và thị trường, và bảo vệ thương hiệu không cần xét duyệt theo chính sách sử dụng chấp nhận được của chúng tôi. Proxy không vượt qua CAPTCHA, cơ chế phát hiện bot, giới hạn tần suất hay lệnh cấm tài khoản, và chính sách cấm dùng nó để thử làm việc đó.


Một địa chỉ tĩnh hợp với các tác vụ cần đến từ cùng một nơi mỗi lần: một công cụ giám sát, một lần kiểm tra theo vùng, một bài kiểm thử so sánh hôm nay với tuần trước. Đặt mua một địa chỉ cho mỗi tác vụ trên trang [proxy ISP](/vi/isp-proxies/), xem [bảng giá](/vi/pricing/), và nếu cùng tác vụ đó chạy trong trình duyệt, hướng dẫn [Selenium](/vi/integrations/selenium/) và [Playwright](/vi/integrations/playwright/) đặt cùng địa chỉ đó ở đấy.



## Nguồn

- [Requests documentation, Proxies](https://requests.readthedocs.io/en/latest/user/advanced/#proxies): tham số proxies, biến môi trường và hỗ trợ SOCKS
- [RFC 1928, SOCKS Protocol Version 5](https://www.rfc-editor.org/rfc/rfc1928): cách client yêu cầu proxy SOCKS5 kết nối tới một đích theo tên hoặc theo địa chỉ
- [RFC 3986, URI Generic Syntax](https://www.rfc-editor.org/rfc/rfc3986#section-3.2.1): phần userinfo của URL và các ký tự phải được mã hóa trong đó




Python requests lấy proxy từ một dictionary ánh xạ scheme của URL đích sang một URL proxy. Hướng dẫn này đặt dictionary đó cho một địa chỉ ISP tĩnh và chỉ ra ba nơi nó có thể nằm: trên một lời gọi, trên một session, hoặc trong biến môi trường.

## Proxy cho Python requests với tên đăng nhập và mật khẩu

Phần lớn proxy, kể cả proxy của chúng tôi, yêu cầu tên đăng nhập và mật khẩu. requests đọc chúng từ URL proxy và gửi tới proxy trên mỗi kết nối. Với đích HTTPS, proxy mở một tunnel và không bao giờ thấy nội dung của request. Các tab code cho thấy dạng dùng cho từng request và dạng dùng session.

