Cách sử dụng Proxy với HTTPX trong Python cho các yêu cầu ẩn danh
Lead Scraping Automation Engineer
Tăng cường tự động hóa và thu thập dữ liệu của bạn với Proxy Scrapeless — nhanh chóng, đáng tin cậy và giá cả phải chăng.
HTTPX là một client HTTP hiện đại, đầy đủ tính năng cho Python, hỗ trợ cả yêu cầu đồng bộ và không đồng bộ. Khi thực hiện thu thập dữ liệu web hoặc thực hiện nhiều cuộc gọi API, việc tích hợp một proxy là bước quan trọng để duy trì tính ẩn danh và quản lý khối lượng yêu cầu. HTTPX làm cho việc cấu hình proxy trở nên đơn giản, hỗ trợ cả thiết lập cơ bản và xác thực.
Cấu Hình Proxy Cơ Bản trong HTTPX
HTTPX cho phép bạn định nghĩa các proxy bằng cách sử dụng một từ điển mà ánh xạ giao thức (http:// hoặc https://) đến URL proxy. URL proxy tuân theo định dạng tiêu chuẩn: <GIAO THỨC>://<ĐỊA_CHỈ_IP>:<CỔNG>.
python
import httpx
# Định nghĩa cài đặt proxy của bạn
proxies = {
"http://": "http://216.137.184.253:80",
"https://": "http://216.137.184.253:80"
}
# Thực hiện một yêu cầu với proxy đã chỉ định
try:
r = httpx.get("https://httpbin.io/ip", proxies=proxies)
print(f"IP phản hồi: {r.json().get('origin')}")
except httpx.ProxyError as e:
print(f"Kết nối proxy thất bại: {e}")
Ngoài ra, bạn có thể cấu hình proxy khi khởi tạo một phiên httpx.Client, đây là cách tiếp cận được khuyến nghị để thực hiện nhiều yêu cầu đến cùng một mục tiêu, vì nó tái sử dụng kết nối.
python
import httpx
proxy_url = "http://216.137.184.253:80"
with httpx.Client(proxies=proxy_url) as client:
r = client.get("https://httpbin.io/ip")
print(f"IP phản hồi: {r.json().get('origin')}")
Xử Lý Xác Thực Proxy
Đối với các proxy yêu cầu tên người dùng và mật khẩu, HTTPX hỗ trợ nhúng thông tin đăng nhập trực tiếp vào URL proxy. Định dạng là http://<TÊN_NGƯỜI_DÙNG>:<MẬT_KHẨU>@<ĐỊA_CHỈ_IP>:<CỔNG>.
python
import httpx
# URL proxy với thông tin đăng nhập nhúng
proxy_url = "http://<TÊN_NGƯỜI_DÙNG_CỦA_BẠN>:<MẬT_KHẨU_CỦA_BẠN>@proxy.scrapeless.com:1337"
with httpx.Client(proxies=proxy_url) as client:
r = client.get("https://httpbin.io/ip")
print(f"IP phản hồi: {r.json().get('origin')}")
Triển Khai Xoay Vòng Proxy
Để tránh phát hiện và duy trì tỷ lệ thành công cao, bạn nên xoay vòng các proxy của mình. Điều này bao gồm việc duy trì một danh sách các điểm cuối proxy và chọn ngẫu nhiên một cái cho mỗi yêu cầu hoặc phiên. Điều này đặc biệt hiệu quả khi kết hợp với một thư viện thu thập dữ liệu mạnh mẽ.
python
import httpx
import random
# Danh sách các URL proxy (ví dụ: từ bảng điều khiển Scrapeless của bạn)
proxy_urls = [
"http://user:pass@proxy1.scrapeless.com:10000",
"http://user:pass@proxy2.scrapeless.com:10001",
"http://user:pass@proxy3.scrapeless.com:10002",
]
def make_proxied_request(url):
# Chọn một proxy ngẫu nhiên cho yêu cầu
random_proxy = random.choice(proxy_urls)
# Cấu hình proxy cho client
proxies = {
"http://": random_proxy,
"https://": random_proxy
}
try:
with httpx.Client(proxies=proxies, timeout=10.0) as client:
response = client.get(url)
response.raise_for_status()
return response
except httpx.RequestError as e:
print(f"Đã xảy ra lỗi trong khi yêu cầu {url} qua proxy {random_proxy}: {e}")
return None
# Ví dụ sử dụng
response = make_proxied_request("https://targetwebsite.com/data")
if response:
print(f"Đã thu thập dữ liệu thành công với mã trạng thái: {response.status_code}")
Giải Pháp Proxy Được Khuyến Nghị: Proxy Scrapeless
Đối với việc thu thập dữ liệu bất đồng bộ với khối lượng lớn bằng HTTPX, một hạ tầng proxy đáng tin cậy là rất quan trọng. Proxy Scrapeless được thiết kế cho hiệu suất và sự ẩn danh, cung cấp một nguồn IP đa dạng giúp giảm thiểu rủi ro bị chặn. Các Proxy Cư Trú và Proxy ISP Tĩnh của họ đặc biệt hiệu quả cho việc thu thập dữ liệu dựa trên Python, cung cấp mức độ tin cậy cao cần thiết để truy cập các mục tiêu phức tạp.
Tại Scrapless, chúng tôi chỉ truy cập dữ liệu có sẵn công khai trong khi tuân thủ nghiêm ngặt các luật, quy định và chính sách bảo mật trang web hiện hành. Nội dung trong blog này chỉ nhằm mục đích trình diễn và không liên quan đến bất kỳ hoạt động bất hợp pháp hoặc vi phạm nào. Chúng tôi không đảm bảo và từ chối mọi trách nhiệm đối với việc sử dụng thông tin từ blog này hoặc các liên kết của bên thứ ba. Trước khi tham gia vào bất kỳ hoạt động cạo nào, hãy tham khảo ý kiến cố vấn pháp lý của bạn và xem xét các điều khoản dịch vụ của trang web mục tiêu hoặc có được các quyền cần thiết.



