Đổi ngôn ngữ
Tiếng Việt English Русский Deutsch Español Français Italiano Українська Türkçe Bahasa Indonesia हिन्दी 日本語 中文
Menu
Bảng giá
Proxy
LOẠI PROXY
THEO VỊ TRÍ77 vị trí
Giải pháp
Tài nguyên

Cách dùng proxy với Python requests

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.

Tóm lại: 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.

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.

Đặ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 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.

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)
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)
# 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)

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ài liệu API đầy đủ

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

Đọ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.
Phạm viThông tin đăng nhậpKhi nào dùng
proxies= trên một lời gọiChỉ request đóTrong URLScript có vài lời gọi
Session.proxiesMọi request của sessionTrong URLMọi thứ dài hơn, với trust_env đặt thành False
HTTP_PROXY và HTTPS_PROXYMọi lời gọi requests trong tiến trìnhTrong URLCode 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 đặtTrong URLKhi tên miền cần được phân giải tại proxy

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.

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ỉ

Các hướng dẫn khác và sản phẩm

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. SOCKS5

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. IP của tôi là gì

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 đó. Chính sách Sử dụng Chấp nhận đượ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, xem bảng giá, và nếu cùng tác vụ đó chạy trong trình duyệt, hướng dẫn Selenium và Playwright đặt cùng địa chỉ đó ở đấy.

Nguồn