Bỏ qua, tới nội dung chính
Esc

Bài viết

Proxy 4G là gì? Cách hoạt động, ưu nhược điểm và khi nào nên dùngProxy xoay là gì? Các kiểu xoay IP và cách đổi IP proxy bằng linkSOCKS5 và HTTP proxy khác nhau thế nào? Nên chọn loại nàoProxy và VPN khác nhau thế nào? Khi nào nên dùng cái nàoProxy tĩnh và proxy xoay khác nhau thế nào? Ưu nhược điểm và khi nào dùng loại nàoProxy riêng và proxy dùng chung — khác nhau thế nào, và với proxy 4G thì "riêng" nghĩa là gìProxy IPv4 và IPv6 khác nhau thế nào? Vì sao proxy IPv6 rẻ và khi nào nó không dùng đượcWebsite phát hiện proxy bằng cách nào? 8 tín hiệu mà hệ thống chống bot nhìn vàoProxy cho Facebook — quản lý nhiều tài khoản ổn định hơn với IP 4GProxy cho TikTok — khi nào cần IP Singapore và cách dùng cho đúngProxy cho quảng cáo — kiểm tra và quản lý quảng cáo nhắm thị trường SingaporeProxy cho Shopee, Lazada Singapore — xem giá, theo dõi đối thủ và vận hành gian hàngProxy cho thu thập dữ liệu web — chọn loại nào, xoay IP ra sao và làm đúng luật chơiCó cần proxy để mua vé concert, sự kiện trên ThaiTicketMajor, Ticketmelon, SISTIC?Scrape kết quả tìm kiếm Google và Bing bằng proxy — và khi nào nên dùng API thay thếCách scrape mà không bị chặn — tốc độ, phiên làm việc và IP sạchProxy cho theo dõi giá — bám giá đối thủ và giá bán lẻ theo từng vùngScrape website có chống bot, chống proxy (Cloudflare, Akamai, DataDome) — điều gì hiệu quả, đâu là giới hạnScrape dữ liệu có hợp pháp không? Robots.txt, điều khoản, dữ liệu cá nhân và bản quyền (Việt Nam, Singapore)Cách cài proxy trên Windows, macOS, iPhone và Android (có tài khoản, mật khẩu)Cách gắn proxy vào GoLogin, AdsPower, Hidemyacc, GenLogin và MultiloginTự động đổi IP proxy bằng API — ví dụ curl, Python và Node.jsCách kiểm tra proxy — IP, quốc gia, nhà mạng, tốc độ và rò rỉ DNS, WebRTCCác lỗi proxy thường gặp và cách khắc phục — 407, timeout, ERR_PROXY_CONNECTION_FAILEDScrape các trang render bằng JavaScript với trình duyệt headless và proxyLỗi 403, 429, 503 khi scrape — nguyên nhân và cách xử lý đúng (có code Python)Dùng proxy với Scrapy — cấu hình có mật khẩu, giới hạn tốc độ, xử lý lỗi và đổi IP giữa các lần chạyProxy 4G, proxy dân cư và proxy datacenter — so sánh chi tiết và cách chọnProxy Singapore — khi nào cần IP Singapore và nên chọn loại nàoProxy sạch và blacklist: "IP sạch" thật ra là gì, và vì sao "không bao giờ bị chặn" là hoang đườngProxy mobile xoay (proxy 4G xoay) — thế nào là "xoay sạch" và cách chọn cho đúngCách nhận biết proxy 4G thật hay giả — kiểm tra nhà mạng, loại IP, độ trễ và cách đổi IPProxy miễn phí và proxy trả phí — rủi ro thật sự của proxy free và khi nào đáng trả tiềnProxy 4G riêng, không share — vì sao proxy chỉ mình bạn dùng lại quan trọng, và cách tự kiểm traProxy 4G giá rẻ — $4 có ngay 200GB, và cách tính giá proxy mobile cho đúng trước khi muaGiới thiệu proxy nhận 10% hoa hồng mỗi đơn — cách chương trình giới thiệu của 65Proxy hoạt độngHướng dẫn và kiến thức về proxy 4G

Dùng proxy với Scrapy — cấu hình có mật khẩu, giới hạn tốc độ, xử lý lỗi và đổi IP giữa các lần chạy

Cài đặt và sử dụng 4 phút đọc

Trong bài này
  1. 01 Scrapy dùng proxy như thế nào
  2. 02 Cách 1: biến môi trường
  3. 03 Cách 2: middleware riêng trong dự án
  4. 04 Cấu hình tốc độ lịch sự
  5. 05 Kiểm tra proxy đang chạy
  6. 06 Đổi IP giữa các lần chạy
  7. 07 Lỗi thường gặp
  8. 08 Proxy 4G Singapore của 65Proxy cho Scrapy
  9. 09 Câu hỏi thường gặp

Scrapy là framework thu thập dữ liệu phổ biến nhất của Python, và nó hỗ trợ proxy sẵn — chỉ là tài liệu nằm rải rác. Bài này gom lại những gì bạn cần: hai cách gắn proxy có tài khoản, mật khẩu, bộ cấu hình tốc độ "lịch sự" để không bị chặn, cách kiểm tra proxy đang chạy, các lỗi hay gặp, và cách đổi IP với proxy 4G mà không làm hỏng lần chạy.

Scrapy dùng proxy như thế nào

Scrapy có sẵn HttpProxyMiddleware, bật mặc định. Nó lấy proxy từ hai nơi:

  • biến môi trường http_proxy và https_proxy, đọc một lần khi Scrapy khởi động,
  • request.meta["proxy"] của từng request — ưu tiên hơn biến môi trường.

Tài khoản, mật khẩu viết thẳng trong địa chỉ proxy (http://USER:PASS@HOST:PORT) — Scrapy tự tách ra và gửi header xác thực cho proxy.

Lưu ý: Scrapy chỉ hỗ trợ proxy HTTP/HTTPS, không hỗ trợ SOCKS5. Với 65Proxy, hãy dùng thông tin kết nối HTTP. Khác biệt giữa hai loại có trong bài SOCKS5 và HTTP proxy.

Cách 1: biến môi trường

Cách nhanh nhất, áp dụng cho mọi request. Cả hai biến đều dùng http:// ở đầu, kể cả https_proxy, vì Scrapy nói chuyện với proxy bằng HTTP:

Terminal
export https_proxy="http://USER:PASS@HOST:PORT"
export http_proxy="$https_proxy"
scrapy crawl prices -O prices.json

Trên Windows PowerShell:

PowerShell
$env:HTTPS_PROXY = "http://USER:PASS@HOST:PORT"
$env:HTTP_PROXY  = $env:HTTPS_PROXY
scrapy crawl prices -O prices.json

Cách 2: middleware riêng trong dự án

Khi muốn kiểm soát trong code — ví dụ chỉ dùng proxy cho một số tên miền — hãy viết một middleware nhỏ đặt meta["proxy"]. Trong middlewares.py:

Python
import os


class ProxyMiddleware:
    def __init__(self):
        self.proxy = os.environ["PROXY"]  # http://USER:PASS@HOST:PORT

    def process_request(self, request, spider=None):
        request.meta.setdefault("proxy", self.proxy)

Rồi bật nó trong settings.py, với số thứ tự nhỏ hơn 750 để chạy trước HttpProxyMiddleware:

Python
DOWNLOADER_MIDDLEWARES = {
    "myproject.middlewares.ProxyMiddleware": 350,
}

Đổi myproject thành tên dự án của bạn. Đọc proxy từ biến môi trường giúp tài khoản, mật khẩu không nằm trong code.

Cấu hình tốc độ lịch sự

Với proxy 4G, mọi request đi ra từ một IP — nên tốc độ quan trọng hơn bao giờ hết. Bộ cấu hình khởi đầu hợp lý cho settings.py:

Python
ROBOTSTXT_OBEY = True
USER_AGENT = "my-crawler/1.0 (+mailto:[email protected])"

CONCURRENT_REQUESTS_PER_DOMAIN = 2
DOWNLOAD_DELAY = 2              # giây; Scrapy tự dao động 0,5–1,5 lần
DOWNLOAD_TIMEOUT = 30           # mặc định 180 giây là quá lâu

AUTOTHROTTLE_ENABLED = True
AUTOTHROTTLE_START_DELAY = 2
AUTOTHROTTLE_MAX_DELAY = 60
AUTOTHROTTLE_TARGET_CONCURRENCY = 1.0

RETRY_TIMES = 3
RETRY_HTTP_CODES = [500, 502, 503, 504, 522, 524, 408, 429]

HTTPCACHE_ENABLED = True        # khi phát triển: không tải lại trang đã có
  • AutoThrottle tự giãn tốc độ khi trang phản hồi chậm.
  • Middleware thử lại mặc định không chờ theo Retry-After. Nếu bạn gặp 429 thường xuyên, hãy tăng DOWNLOAD_DELAY và giảm CONCURRENT_REQUESTS_PER_DOMAIN thay vì tăng số lần thử. Ý nghĩa từng mã lỗi có trong bài lỗi 403, 429, 503 khi scrape.
  • Bộ đệm HTTP khi phát triển giúp bạn sửa code bóc tách mà không tải lại trang từ trang đích — tắt nó khi chạy thật nếu cần dữ liệu mới.

Kiểm tra proxy đang chạy

Lệnh scrapy fetch tải một trang với cấu hình hiện tại và in nội dung ra màn hình:

Terminal
scrapy fetch --nolog https://api.ipify.org

Kết quả phải là IP của proxy, không phải IP nhà bạn. Muốn xem thêm nhà mạng và quốc gia:

Terminal
scrapy fetch --nolog https://ipinfo.io/json

Đổi IP giữa các lần chạy

Với proxy 4G, đổi IP nghĩa là gọi link đổi IP của proxy và chờ thiết bị kết nối lại. Trong Scrapy, cách sạch nhất là đổi IP giữa các lần chạy, không phải giữa từng request:

  • đổi IP giữa chừng làm cookie và phiên không còn khớp với IP,
  • các request đang chạy dở sẽ lỗi trong lúc thiết bị kết nối lại,
  • và mỗi proxy 65Proxy đổi IP tối đa một lần mỗi 5 phút.

Một script chạy trước mỗi lần crawl (link đổi IP để trong biến môi trường ROTATE_URL):

Terminal
export https_proxy="http://USER:PASS@HOST:PORT"
export http_proxy="$https_proxy"

old=$(curl -s -m 15 -x "$https_proxy" https://api.ipify.org)
curl -s -m 60 "$ROTATE_URL" > /dev/null
for i in $(seq 1 20); do
  sleep 3
  new=$(curl -s -m 10 -x "$https_proxy" https://api.ipify.org)
  if [ -n "$new" ] && [ "$new" != "$old" ]; then break; fi
done
echo "IP: $old -> $new"

scrapy crawl prices -O prices.json

Bản Python và Node.js của vòng chờ này có trong bài đổi IP proxy bằng API.

Lỗi thường gặp

  • 407 Proxy Authentication Required — sai tài khoản, mật khẩu. Nếu mật khẩu có ký tự đặc biệt, mã hoá nó trong địa chỉ proxy: @ thành %40, : thành %3A.
  • TunnelError: Could not open CONNECT tunnel — proxy từ chối mở đường hầm cho HTTPS; thường do sai thông tin đăng nhập, sai cổng, hoặc dùng nhầm cổng SOCKS5.
  • Lỗi khi dùng socks5:// — Scrapy không hỗ trợ SOCKS; chuyển sang cổng HTTP.
  • Timeout hàng loạt trong một lúc — thường là lúc proxy đang đổi IP hoặc sóng yếu; RETRY_TIMES và DOWNLOAD_TIMEOUT hợp lý sẽ xử lý.
  • IP vẫn là IP nhà bạn — biến môi trường đặt sau khi Scrapy đã khởi động, hoặc đặt trong một cửa sổ terminal khác.

Các lỗi chung của proxy có trong bài các lỗi proxy thường gặp.

Proxy 4G Singapore của 65Proxy cho Scrapy

Proxy của chúng tôi có cổng HTTP với tài khoản, mật khẩu — đúng thứ Scrapy cần — và link đổi IP theo yêu cầu (tối đa một lần mỗi 5 phút). IP nhà mạng di động Singapore giúp bạn truy cập dữ liệu công khai trên những trang chặn IP máy chủ, hoặc dữ liệu chỉ hiện với khách Singapore. 200GB mỗi gói, giá 1 ngày $4, 7 ngày $13, 1 tháng $40. Hãy dùng nó cùng bộ cấu hình tốc độ ở trên và tôn trọng quy định của từng trang — xem scrape dữ liệu có hợp pháp không và bảng giá.

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

Một proxy 4G có đủ cho Scrapy không?

Với thu thập dữ liệu lịch sự — vài request mỗi giây trở xuống trên mỗi trang — thường là đủ. Nếu bạn cần tốc độ cao hơn nhiều, hãy hỏi trang đích về API trước khi nghĩ tới thêm IP.

Có middleware xoay proxy cho Scrapy không?

Có những thư viện xoay qua một danh sách proxy. Với một proxy 4G đổi IP theo link, bạn không cần chúng — chỉ cần đổi IP giữa các lần chạy như ở trên.

Scrapy có chạy được JavaScript không?

Bản thân Scrapy thì không. Với trang cần JavaScript, hãy tìm API mà trang gọi, hoặc dùng trình duyệt headless — xem scrape trang JavaScript.