Cách cấu hình và xoay vòng bể proxy trong Python Scrapy

Cập nhật:

Scrapy là framework thu thập dữ liệu bất đồng bộ tốc độ cao nhất trong Python (dựa trên kiến trúc Twisted). Nhờ HttpProxyMiddleware được tích hợp sẵn, bạn chỉ cần gán chuỗi http://user:pass@ip:port của VinaProxy vào khóa request.meta['proxy'] hoặc viết một Downloader Middleware 10 dòng code để tự động xoay vòng qua hàng chục địa chỉ IP tĩnh.

Scrapy · HTTP Proxy Format
request.meta['proxy'] = 'http://user:pass@ip:port'
Proxy IPv4 riêng (datacenter)
🇺🇸 United States
Còn hàng
Chỉ từ
20.000 ₫ / IP / tháng
Bảng giá theo số lượng
  • 1 IP40.000 ₫
  • 5+ IP35.000 ₫
  • 10+ IP25.000 ₫
  • 20+ IP25.000 ₫
  • 50+ IP25.000 ₫
  • 100+ IP25.000 ₫
  • 200+ IP25.000 ₫
  • 500+ IP25.000 ₫
  • 1000+ IP22.000 ₫
  • 2000+ IP20.000 ₫
Mua United States
Proxy IPv4 riêng (datacenter)
🇬🇧 United Kingdom
Còn hàng
Chỉ từ
20.000 ₫ / IP / tháng
Bảng giá theo số lượng
  • 1 IP40.000 ₫
  • 5+ IP35.000 ₫
  • 10+ IP25.000 ₫
  • 20+ IP25.000 ₫
  • 50+ IP25.000 ₫
  • 100+ IP25.000 ₫
  • 200+ IP25.000 ₫
  • 500+ IP25.000 ₫
  • 1000+ IP22.000 ₫
  • 2000+ IP20.000 ₫
Mua United Kingdom
Proxy theo nền tảng:web-scrapingseo-rank-trackingamazon

Cơ chế hoạt động của HttpProxyMiddleware và thiết lập settings.py

Mặc định HttpProxyMiddleware (thứ tự 750 trong DOWNLOADER_MIDDLEWARES_BASE) tự động tách phần user:pass từ URL http://user:pass@ip:port, mã hóa Base64 và đính kèm vào header Proxy-Authorization cho mỗi request đi ra.

Thiết lập trong ScrapyGiá trị khuyến nghịTác dụng kỹ thuật
request.meta['proxy']'http://user:pass@ip:port'Chỉ định máy chủ proxy cho từng Request cụ thể
CONCURRENT_REQUESTS_PER_IP2 hoặc 4Giới hạn số kết nối đồng thời trên mỗi IP để tránh lỗi HTTP 429
DOWNLOAD_DELAY1.0 (kèm RANDOMIZE_DOWNLOAD_DELAY = True)Giãn nhịp truy vấn tự nhiên trên từng địa chỉ IP
AUTOTHROTTLE_ENABLEDTrueTự động giảm tốc độ nếu máy chủ đích phản hồi chậm

Viết Downloader Middleware xoay vòng danh sách proxy trong middlewares.py

  • Định nghĩa lớp ProxyPoolMiddleware có hàm process_request(self, request, spider) gán request.meta['proxy'] = random.choice(self.proxies)
  • Đặt thứ tự của ProxyPoolMiddleware là 740 trong DOWNLOADER_MIDDLEWARES (trước HttpProxyMiddleware ở vị trí 750) để Scrapy tự xử lý phần mã hóa xác thực
  • Kết hợp với RetryMiddleware để khi một request gặp mã 429 hoặc 503, Scrapy tự động thử lại bằng một địa chỉ IP khác trong bể

Các bước thực hiện

  1. 1

    Xuất danh sách proxy sang định dạng http://user:pass@ip:port

    Sử dụng công cụ đổi định dạng proxy để chuyển danh sách VinaProxy sang mảng URL.

  2. 2

    Thêm lớp ProxyPoolMiddleware vào file middlewares.py

    Trong hàm process_request(self, request, spider), gán request.meta['proxy'] = random.choice(PROXIES).

  3. 3

    Kích hoạt trong settings.py ở vị trí 740

    Khai báo 'myproject.middlewares.ProxyPoolMiddleware': 740 trong DOWNLOADER_MIDDLEWARES và bật CONCURRENT_REQUESTS_PER_IP = 2.

  4. 4

    Chạy thử nghiệm bằng lệnh scrapy crawl

    Kiểm tra log đầu ra để xác nhận các request được phân bổ đều và không gặp lỗi 407.

Câu hỏi thường gặp

Tại sao đặt Middleware ở số 800 trong DOWNLOADER_MIDDLEWARES lại bị lỗi xác thực?

HttpProxyMiddleware mặc định của Scrapy nằm ở số 750 và chịu trách nhiệm tách user:pass ra khỏi URL để tạo header Proxy-Authorization. Do đó Middleware gán request.meta['proxy'] của bạn bắt buộc phải có số thứ tự nhỏ hơn 750 (ví dụ 740 hoặc 350).

Scrapy có tái sử dụng kết nối tới từng proxy trong bể không?

Có. Động cơ Twisted trong Scrapy duy trì bể kết nối (connection pool) riêng cho từng địa chỉ proxy, giúp các request tiếp theo đi qua cùng IP đó không mất thời gian bắt tay lại.

Quét hàng triệu sản phẩm bằng Scrapy có bị tính thêm phí băng thông tại VinaProxy không?

Không. Tất cả proxy IPv4 riêng và Static ISP của VinaProxy đều không giới hạn dung lượng băng thông.

Xây dựng cụm Crawler Scrapy tốc độ cao không giới hạn băng thông

Mua sỉ proxy IPv4 riêng & Static ISP tại 7 quốc gia, tích hợp vào Scrapy trong 2 phút.

Mua Proxy cho Scrapy

Bài viết liên quan

Proxy theo nền tảng
Proxy cho Web Scraping: cào dữ liệu tốc độ cao, không giới hạn băng thông
Mua proxy IPv4 riêng và ISP tĩnh tốc độ cao cho Python, Playwright, Selenium và Scrapy. Cào dữ liệu giá TMĐT, tin tức và API ổn định 24/7.
Cài đặt proxy
Cách cấu hình proxy HTTP(S) trong Python Requests chuẩn kỹ thuật
Hướng dẫn gắn proxy HTTP(S) có username và password vào thư viện Python requests, requests.Session(), xử lý lỗi ProxyError 407 và xoay vòng bể IP.
Cài đặt proxy
Cách cấu hình proxy trong Playwright (Node.js & Python)
Hướng dẫn gắn proxy HTTP có username và password vào Playwright ở tầng Browser và BrowserContext. Cách chạy nhiều IP song song trên 1 tiến trình.
Công cụ miễn phí
Công cụ chuyển đổi định dạng Proxy hàng loạt (100% xử lý tại trình duyệt)
Chuyển đổi định dạng danh sách proxy hàng loạt ngay trên trình duyệt: ip:port:user:pass, user:pass@ip:port, http:// URL, JSON và FoxyProxy an toàn 100%.
Proxy theo nền tảng
Proxy cho SEO & SERP Tracking: kiểm tra thứ hạng từ khóa chính xác theo từng nước
Mua proxy IPv4 riêng và ISP tĩnh tại Việt Nam, Mỹ, Nhật, Hàn, Anh, Singapore để kiểm tra thứ hạng từ khóa SEO địa phương và theo dõi đối thủ.
Proxy theo nền tảng
Proxy cho Amazon: bảo vệ tài khoản Seller Central, KDP và Merch khỏi lỗi Related Account
Mua proxy Static ISP Mỹ và IPv4 riêng Anh, Nhật cho tài khoản Amazon Seller Central, KDP, Merch và cào dữ liệu giá sản phẩm không bị khóa liên kết.
IPV4 · united states
Proxy IPv4 riêng Mỹ: IP datacenter Hoa Kỳ nhanh, dùng riêng và ổn định
Proxy IPv4 Mỹ dùng riêng cho cào dữ liệu, theo dõi thứ hạng, duyệt quảng cáo và nghiên cứu Amazon. IP tĩnh, 1 người 1 IP, băng thông không giới hạn.
IPV4 · united kingdom
Proxy IPv4 riêng Vương quốc Anh: IP datacenter Anh tĩnh cho người bán, SEO và quảng cáo
Proxy IPv4 Anh riêng cho nghiên cứu eBay UK, Amazon.co.uk, theo dõi hạng google.co.uk, duyệt quảng cáo Anh và tài khoản mạng xã hội. Băng thông không giới hạn.