Cách xoay vòng proxy trong Python

Expert Network Defense Engineer
Giới thiệu
Lưu thông tin proxy xoay vòng trong Python đảm bảo việc thu thập dữ liệu và tự động hóa web ổn định, đáng tin cậy. Sử dụng một địa chỉ IP đơn lẻ có thể dẫn đến việc bị chặn và giới hạn tốc độ. Hướng dẫn này sẽ đề cập đến 10 phương pháp thực tiễn để xoay vòng proxy một cách hiệu quả. Để có một giải pháp nhanh chóng và đơn giản hơn, hãy xem xét việc sử dụng Scrapeless, cái mà xử lý việc xoay vòng proxy tự động.
1. Sử dụng danh sách proxy một cách thủ công
Kết luận: Chuyển đổi proxy từ danh sách một cách thủ công giúp tránh bị phát hiện.
Các bước:
- Chuẩn bị một danh sách proxy (
proxies = ["http://ip:port", ...]
). - Sử dụng
random.choice(proxies)
để chọn một proxy cho mỗi yêu cầu. - Truyền proxy vào
requests
hoặchttpx
:
python
import requests, random
proxies = ["http://111.111.111.111:8080", "http://222.222.222.222:8080"]
proxy = random.choice(proxies)
response = requests.get("https://example.com", proxies={"http": proxy, "https": proxy})
print(response.text)
Ứng dụng: Thu thập dữ liệu quy mô nhỏ hoặc thử nghiệm nhiều điểm cuối mà không bị cấm.
2. Sử dụng xoay vòng proxy với phiên requests
Kết luận: Một đối tượng phiên cho phép sử dụng proxy nhất quán trên nhiều yêu cầu.
Các bước:
- Tạo
requests.Session()
. - Gán một proxy từ danh sách của bạn cho mỗi phiên.
python
import requests, random
session = requests.Session()
proxies = ["http://111.111.111.111:8080", "http://222.222.222.222:8080"]
session.proxies.update({"http": random.choice(proxies), "https": random.choice(proxies)})
response = session.get("https://example.com")
print(response.status_code)
Ứng dụng: Khi thu thập dữ liệu từ các trang yêu cầu phiên kéo dài.
3. Sử dụng thư viện proxy của bên thứ ba
Kết luận: Các thư viện như requests-ip-rotator
đơn giản hóa việc xoay vòng proxy.
Các bước:
python
# Ví dụ với requests-ip-rotator
from requests_ip_rotator import ApiGatewaySession
session = ApiGatewaySession("https://example.com")
response = session.get("https://example.com")
print(response.text)
Ứng dụng: Tốt nhất cho các API hoặc yêu cầu thường xuyên cần xoay vòng IP.
4. Xoay vòng proxy sử dụng Tor
Kết luận: Tor cung cấp việc xoay vòng proxy miễn phí thông qua các mạch.
Các bước:
- Cài đặt Tor (
sudo apt install tor
) và thư viện Pythonstem
. - Kết nối qua proxy SOCKS của Tor (
127.0.0.1:9050
). - Thay đổi IP bằng các lệnh Tor.
python
import requests
proxies = {"http": "socks5h://127.0.0.1:9050", "https": "socks5h://127.0.0.1:9050"}
response = requests.get("https://example.com", proxies=proxies)
print(response.text)
Ứng dụng: Thu thập dữ liệu ẩn danh mà không phải trả tiền cho proxy.
5. Sử dụng nhà cung cấp proxy xoay vòng
Kết luận: Các nhà cung cấp trả phí đảm bảo độ tin cậy và tốc độ cao.
Các bước:
- Đăng ký dịch vụ như Luminati, ScraperAPI hoặc Scrapeless.
- Sử dụng các điểm cuối của họ với xác thực.
- Tự động xoay vòng proxy cho mỗi yêu cầu.
python
import requests
api_key = "YOUR_API_KEY"
url = f"http://proxyprovider.com?api_key={api_key}&url=https://example.com"
response = requests.get(url)
print(response.text)
Ứng dụng: Các dự án thu thập dữ liệu quy mô lớn với thời gian ngừng tối thiểu.
6. Xoay vòng proxy trong Selenium
Kết luận: Tự động hóa web cần phải xoay vòng proxy để ngăn chặn việc bị cấm IP.
Các bước:
python
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
import random
proxies = ["111.111.111.111:8080", "222.222.222.222:8080"]
chrome_options = Options()
chrome_options.add_argument(f'--proxy-server={random.choice(proxies)}')
driver = webdriver.Chrome(options=chrome_options)
driver.get("https://example.com")
Ứng dụng: Duyệt web tự động và thử nghiệm với nhiều IP.
7. Xoay vòng proxy trong Scrapy
Kết luận: Scrapy hỗ trợ middleware cho việc xoay vòng proxy.
Các bước:
- Bật
HttpProxyMiddleware
. - Định nghĩa danh sách các proxy trong
settings.py
. - Sử dụng middleware để xoay vòng cho mỗi yêu cầu.
python
DOWNLOADER_MIDDLEWARES = {
'scrapy.downloadermiddlewares.httpproxy.HttpProxyMiddleware': 1,
}
PROXY_LIST = ['http://111.111.111.111:8080', 'http://222.222.222.222:8080']
Ứng dụng: Thu thập dữ liệu quy mô lớn với spider của Scrapy.
8. Sử dụng xoay vòng proxy bất đồng bộ với httpx
Kết luận: Các thư viện bất đồng bộ cho phép yêu cầu đồng thời với nhiều proxy.
python
import httpx, asyncio, random
proxies = ["http://111.111.111.111:8080", "http://222.222.222.222:8080"]
async def fetch(url):
proxy = random.choice(proxies)
async with httpx.AsyncClient(proxies={"http": proxy, "https": proxy}) as client:
response = await client.get(url)
print(response.status_code)
asyncio.run(fetch("https://example.com"))
Ứng dụng: Thu thập dữ liệu tốc độ cao cho nhiều URL.
9. Xoay vòng proxy tự động với Scrapeless
Kết luận: Scrapeless xử lý việc xoay vòng proxy tự động, đơn giản hóa phát triển.
Lợi ích:
- Không cần quản lý danh sách proxy thủ công
- Tích hợp với các script scraping bằng Python
- Hỗ trợ độ đồng thời cao và độ tin cậy
Ứng dụng: Lý tưởng cho cả người mới bắt đầu và những chuyên gia tìm kiếm hiệu quả.
10. Proxy xoay vòng với biến môi trường
Kết luận: Thay đổi cấu hình proxy một cách động bằng cách sử dụng biến môi trường.
Các bước:
- Lưu trữ proxy trong tệp
.env
. - Tải và chọn ngẫu nhiên proxy trong các script.
python
import os, random
from dotenv import load_dotenv
import requests
load_dotenv()
proxies = os.getenv("PROXIES").split(",")
proxy = random.choice(proxies)
response = requests.get("https://example.com", proxies={"http": proxy, "https": proxy})
Ứng dụng: Hữu ích cho các pipeline scraping có thể cấu hình được.
Tóm tắt so sánh
Phương pháp | Dễ sử dụng | Chi phí | Khả năng mở rộng | Trường hợp sử dụng tốt nhất |
---|---|---|---|---|
Danh sách thủ công | Dễ | Miễn phí | Thấp | Dự án nhỏ |
Phiên Requests | Dễ | Miễn phí | Trung bình | Các phiên kéo dài |
Thư viện Proxy | Trung bình | Miễn phí/Tính phí | Trung bình | Gọi API |
Tor | Trung bình | Miễn phí | Thấp | Scraping ẩn danh |
Nhà cung cấp trả phí | Dễ | Tính phí | Cao | Scraping quy mô lớn |
Selenium | Trung bình | Miễn phí/Tính phí | Trung bình | Nhiệm vụ tự động |
Scrapy | Trung bình | Miễn phí | Cao | Dự án spider lớn |
Async httpx | Khó | Miễn phí | Cao | Độ đồng thời cao |
Scrapeless | Rất dễ | Tính phí | Cao | Giải pháp tất cả trong một |
Biến môi trường | Trung bình | Miễn phí | Trung bình | Các pipeline có thể cấu hình |
Lưu ý quan trọng
- Proxy xoay vòng là điều cần thiết để ngăn chặn việc chặn và duy trì sự ổn định của quá trình scraping.
- Python hỗ trợ nhiều phương pháp, từ danh sách thủ công đến các giải pháp async và tính phí.
- Scrapeless cung cấp phương pháp xoay vòng dễ nhất và đáng tin cậy nhất.
Câu hỏi thường gặp
H1: Tại sao tôi nên xoay vòng proxy trong Python?
Để tránh bị cấm IP, giới hạn tỷ lệ và đảm bảo quá trình scraping đáng tin cậy.
H2: Tôi có thể sử dụng proxy miễn phí cho việc xoay vòng không?
Có, nhưng độ tin cậy và tốc độ có thể thấp. Các dịch vụ trả phí được khuyến nghị cho các dự án lớn.
H3: Scrapeless có yêu cầu lập trình không?
Cần lập trình tối thiểu; nó tích hợp mượt mà với các script Python.
H4: Tôi có thể xoay vòng proxy trong Selenium không?
Có, bằng cách cấu hình các tùy chọn trình duyệt với các máy chủ proxy khác nhau.
H5: Tôi nên xoay vòng proxy bao lâu một lần?
Điều này phụ thuộc vào lưu lượng yêu cầu của bạn và chính sách của trang web mục tiêu.
Giải pháp được khuyến nghị
Để có trải nghiệm không phiền phức, hãy thử Scrapeless để tự động xử lý việc xoay vòng proxy và tập trung vào việc thu thập dữ liệu thay vì quản lý thủ công.
Tài liệu tham khảo
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.