Scraper na Twoim laptopie jest w porządku, dopóki nie zamkniesz go w środku przebiegu, Twoje domowe IP nie dostanie limitu zapytań lub nie zechcesz, by to samo zadanie działało co godzinę, niezależnie od tego, czy nie śpisz. Przeniesienie go na VPS naprawia wszystkie trzy: pozostaje włączony 24/7, nie pali reputacji Twojego domowego IP, a cron lub timer systemd uruchamia go według harmonogramu bez Ciebie. Oto jak to skonfigurować, ile serwera faktycznie potrzebujesz i części, które większość przewodników po cichu pomija.
Dlaczego VPS bije Twoją maszynę do tego
- 24/7 i zaplanowany. Scraper działający co godzinę potrzebuje hosta, który jest zawsze włączony. Laptop nie jest.
- Twoje domowe IP pozostaje czyste. Scraping z domu oznacza, że Twoje residentialne IP bierze limity zapytań i blokady. Rób to z serwera, a Twoje własne połączenie pozostaje nietknięte.
- Stabilność. Bez uśpienia, bez spadków wifi w środku crawla, stabilne połączenie centrum danych i miejsce na gromadzenie wyników.
Stos i czego potrzebuje każda część
Dwie bardzo różne klasy wagowe, a wybór złego planu marnuje pieniądze lub zagładza zadanie:
- httpx / requests (Python) — dla API, punktów końcowych JSON i statycznego HTML. To lekkie: proces siedzi w dziesiątkach megabajtów, ograniczony siecią, nie CPU. Nano za 3 $ (1 vCPU / 1 GB) uruchamia to wygodnie, nawet ze współbieżnością przez
asyncio. - Playwright / headless Chromium — dla stron renderowanych JavaScriptem, gdzie potrzebujesz prawdziwej przeglądarki. To ta ciężka. Headless Chromium to mniej więcej 300–400 MB na instancję przeglądarki, plus 100–200 MB na otwarty kontekst/kartę, plus Twoje środowisko uruchomieniowe. Budżet:
- Micro za 5 $ (2 vCPU / 2 GB) — jeden lub dwa konteksty przeglądarki naraz.
- Small za 8 $ (4 vCPU / 4 GB) — kilka równoległych kontekstów lub cięższe strony.
Zasada kciuka: Twój kod prawie nigdy nie jest wąskim gardłem — Chromium jest. Dobierz rozmiar pod przeglądarkę, nie scraper.
Harmonogram: timer systemd zamiast crona
cron działa, ale timer systemd jest lepszym domyślnym wyborem na serwerze, który utrzymujesz: logi przez journalctl, nadrobienie, jeśli maszyna była wyłączona, i status na przebieg do sprawdzenia. Minimalna konfiguracja:
# /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 # obserwuj przebiegi
Persistent=true to część, której cron nie potrafi: jeśli serwer był wyłączony w czasie przebiegu, zadanie odpala się raz przy rozruchu zamiast po cichu pomijać.
Gdzie idą wyniki
Trzymaj to prosto i dopasuj do wolumenu: SQLite dla ustrukturyzowanych danych, które będziesz odpytywał (jeden plik, zero konfiguracji), CSV dla szybkich zrzutów tabelarycznych lub magazyn obiektowy zgodny z S3, gdy wyniki przerastają maszynę lub chcesz je mieć poza serwerem. Rotuj logi (logrotate lub limity journald), by gadatliwy scraper powoli nie wypełnił dysku.
Uczciwa część: wyjściowe IP i reputacja
To szczegół, który decyduje, czy Twój scraper działa przez tydzień, czy zostaje zablokowany pierwszego dnia.
Na planie NAT ruch wychodzący współdzieli jedno wyjściowe IP z innymi klientami. Reputacja tego IP jest współdzielona — sąsiad scrapujący ten sam cel może spowodować limit zapytań na adresie, zanim wyślesz pojedyncze żądanie. W porządku dla lekkiego, sporadycznego scrapingu; obciążenie na wolumenie.
Dedykowane IP daje Ci własną wyjściową reputację — cudze zachowanie na nią nie wpływa. Ale to działa w obie strony: agresywny scraping pali Twoje własne czyste IP, a gdy cel je zablokuje, jest zablokowane. Dedykowane IP to kontrola, nie odporność.
Na prawdziwej skali potrzebujesz zewnętrznych pooli proxy. Żadne pojedyncze IP — współdzielone czy dedykowane — nie może rozłożyć obciążenia na wiele adresów, czego wymaga poważny scraping przeciwko celom ograniczającym zapytania po IP. Proxy to generyczna, zewnętrzna warstwa, którą dodajesz na wierzchu; VPS uruchamia scraper, pool proxy dostarcza adresy. Nie oczekuj, że jedno IP serwera zrobi robotę poolu proxy.
Etyka i AUP — nie opcjonalne
Scraping żyje w prawnej i etycznej szarej strefie, więc bądź trzeźwy:
- Szanuj limity zapytań i robots.txt. Dław swoje żądania. Grzeczny scraper wygląda jak ruch; niegrzeczny wygląda jak atak.
- Nie DoS-uj swojego celu. Walenie w stronę, aż się przewróci, to nie scraping, to odmowa usługi — i to naruszenie zasad użytkowania tutaj, które skutkuje zakończeniem usługi.
- Scrapuj tylko to, na co Ci wolno. Legalne, dozwolone zbieranie danych to granica. Przekrocz ją i to na Tobie.
Konkluzja
VPS to właściwy dom dla scrapera: zawsze włączony, zaplanowany i z dala od Twojego domowego IP. Dopasuj plan do stosu — Nano za 3 $ dla httpx, Micro za 5 $ do Small za 8 $ dla Playwright — planuj timerem systemd i bądź uczciwy co do IP: współdzielone wyjściowe dzieli reputację, dedykowane IP jest Twoje do zbudowania lub spalenia, a prawdziwa skala oznacza poole proxy. Najpierw zablokuj maszynę listą kontrolną bezpieczeństwa nowego VPS, dobierz właściwy rozmiar przewodnikiem doboru VPS, a jeśli prywatność płacenia-bez-karty ma znaczenie, rozkład anonimowego VPS to uczciwa wersja. Scrapuj odpowiedzialnie — AUP jest prawdziwe.
Gotowy scrapować? Plan Micro to solidny start; duże równoległe crawle działają lepiej na Small.
Komentarze
Brak komentarzy. Bądź pierwszy.