Một scraper trên laptop của bạn ổn cho tới khi bạn đóng nó giữa một lần chạy, IP nhà bạn bị giới hạn tần suất, hoặc bạn muốn cùng job chạy mỗi giờ dù bạn thức hay không. Chuyển nó tới một VPS sửa cả ba: nó ở lại lên 24/7, nó không đốt danh tiếng IP nhà bạn, và cron hoặc một systemd timer chạy nó theo lịch mà không cần bạn. Đây là cách thiết lập điều đó, bạn thực sự cần bao nhiêu máy chủ, và các phần hầu hết các hướng dẫn lặng lẽ bỏ qua.
Vì sao một VPS đánh bại máy của bạn cho việc này
- 24/7 và theo lịch. Một scraper chạy hàng giờ cần một host luôn bật. Một laptop thì không.
- IP nhà bạn ở lại sạch. Scraping từ nhà nghĩa là IP dân cư của bạn chịu các giới hạn tần suất và chặn. Làm nó từ một máy chủ và kết nối của riêng bạn ở lại không bị chạm.
- Ổn định. Không ngủ, không rớt wifi giữa một cuộc thu thập, một kết nối datacenter đều đặn, và một nơi để tích lũy kết quả.
Stack, và mỗi phần cần gì
Hai hạng cân rất khác nhau, và chọn sai gói phí tiền hoặc bỏ đói job:
- httpx / requests (Python) — cho các API, endpoint JSON, và HTML tĩnh. Cái này nhẹ: tiến trình nằm trong hàng chục megabyte, ràng buộc mạng, không phải CPU. Một Nano $3 (1 vCPU / 1 GB) chạy cái này thoải mái, kể cả với đồng thời qua
asyncio. - Playwright / Chromium headless — cho các trang render bằng JavaScript nơi bạn cần một trình duyệt thật. Đây là cái nặng. Chromium headless khoảng 300–400 MB mỗi instance trình duyệt, cộng 100–200 MB mỗi context/tab mở, cộng runtime của bạn. Dự trù:
- Micro $5 (2 vCPU / 2 GB) — một hai browser context tại một thời điểm.
- Small $8 (4 vCPU / 4 GB) — vài context song song, hoặc các trang nặng hơn.
Quy tắc ngón tay cái: mã của bạn gần như không bao giờ là nút thắt cổ chai — Chromium mới là. Chọn kích cỡ cho trình duyệt, không phải scraper.
Lập lịch: systemd timer thay cron
cron hoạt động, nhưng một systemd timer là mặc định tốt hơn trên một máy chủ bạn bảo trì: log qua journalctl, bắt kịp nếu cỗ máy đã down, và trạng thái theo-từng-lần-chạy kiểm tra được. Một thiết lập tối thiểu:
# /etc/systemd/system/scrape.service
[Unit]
Description=Run scraper
[Service]
Type=oneshot
User=scraper
WorkingDirectory=/home/scraper/job
ExecStart=/home/scraper/job/venv/bin/python scrape.py
# /etc/systemd/system/scrape.timer
[Unit]
Description=Hourly scrape
[Timer]
OnCalendar=hourly
Persistent=true
[Install]
WantedBy=timers.target
sudo systemctl enable --now scrape.timer
journalctl -u scrape.service -f # xem các lần chạy
Persistent=true là điều cron không thể làm: nếu máy chủ tắt lúc giờ chạy, job bắn một lần lúc boot thay vì lặng lẽ bỏ qua.
Kết quả đi đâu
Giữ nó đơn giản và khớp khối lượng: SQLite cho dữ liệu có cấu trúc bạn sẽ truy vấn (một tập tin, không thiết lập), CSV cho các bản dump dạng bảng nhanh, hoặc một object store tương thích S3 khi kết quả vượt quá cỗ máy hoặc bạn muốn chúng ngoài-máy-chủ. Xoay các log của bạn (logrotate hoặc các giới hạn journald) để một scraper nhiều lời không dần lấp đĩa.
Phần trung thực: IP egress và danh tiếng
Đây là chi tiết quyết định liệu scraper của bạn hoạt động một tuần hay bị chặn ngày đầu.
Trên một gói NAT, lưu lượng đi ra chia sẻ một IP egress với các khách hàng khác. Danh tiếng của IP đó được chia sẻ — một máy bên cạnh scraping cùng mục tiêu có thể khiến địa chỉ bị giới hạn tần suất trước khi bạn gửi một yêu cầu. Ổn cho scraping nhẹ, thỉnh thoảng; một trách nhiệm ở quy mô.
Một IP riêng cho bạn danh tiếng egress của riêng bạn — không hành vi của ai khác ảnh hưởng nó. Nhưng nó cắt cả hai chiều: scraping hung hãn đốt IP sạch của chính bạn, và một khi một mục tiêu chặn nó, nó bị chặn. Một IP riêng là kiểm soát, không phải miễn dịch.
Ở quy mô thật, bạn cần các hồ proxy bên ngoài. Không IP đơn nào — dùng chung hay riêng — có thể trải tải qua nhiều địa chỉ, vốn là cái scraping nghiêm túc chống lại các mục tiêu giới hạn-tần-suất-theo-IP đòi hỏi. Proxy là một lớp chung, bên thứ ba bạn thêm lên trên; VPS chạy scraper, hồ proxy cung cấp các địa chỉ. Đừng trông đợi một IP máy chủ làm việc của một hồ proxy.
Đạo đức và AUP — không phải tùy chọn
Scraping sống trong một vùng xám pháp lý và đạo đức, nên hãy nhìn rõ:
- Tôn trọng các giới hạn tần suất và robots.txt. Điều tiết các yêu cầu của bạn. Một scraper lịch sự trông như lưu lượng; một cái bất lịch sự trông như một cuộc tấn công.
- Đừng DoS mục tiêu của bạn. Đập một trang cho tới khi nó ngã không phải scraping, nó là một từ-chối-dịch-vụ — và nó là một vi phạm sử dụng hợp lý ở đây khiến dịch vụ bị chấm dứt.
- Chỉ scrape cái bạn được phép. Thu thập dữ liệu hợp pháp, được phép là ranh giới. Vượt nó và nó do bạn.
Kết luận
Một VPS là ngôi nhà đúng cho một scraper: luôn-bật, theo lịch, và ngoài IP nhà bạn. Khớp gói với stack — Nano $3 cho httpx, Micro $5 đến Small $8 cho Playwright — lập lịch với một systemd timer, và trung thực về các IP: egress dùng chung chia sẻ danh tiếng, một IP riêng là của bạn để xây hoặc đốt, và quy mô thật nghĩa là các hồ proxy. Khóa cỗ máy lại trước với danh sách kiểm tra bảo mật VPS-mới, chọn kích cỡ đúng dùng hướng dẫn chọn kích cỡ VPS, và nếu quyền riêng tư thanh-toán-không-thẻ quan trọng, phân tích VPS ẩn danh là phiên bản trung thực. Scrape có trách nhiệm — AUP là thật.
Sẵn sàng scrape? Một gói Micro là một khởi đầu vững; các cuộc thu thập đồng thời lớn tốt hơn trên Small.
Bình luận
Chưa có bình luận nào. Hãy là người đầu tiên.