En scraper på din bærbare er fin, indtil du lukker den midt i en kørsel, din hjemme-IP bliver rate-limited, eller du vil have det samme job til at køre hver time, uanset om du er vågen eller ej. At flytte den til en VPS fikser alle tre: den forbliver oppe 24/7, den brænder ikke din hjemme-IP's omdømme, og cron eller en systemd-timer kører den efter tidsplan uden dig. Her er, hvordan man sætter det op, hvor meget server du faktisk har brug for, og de dele, de fleste guides stille springer over.
Hvorfor en VPS slår din maskine til dette
- 24/7 og planlagt. En scraper, der kører hver time, har brug for en vært, der altid er tændt. En bærbar er det ikke.
- Din hjemme-IP forbliver ren. At scrape hjemmefra betyder, at din residentielle IP tager rate-limits og blokeringer. Gør det fra en server, og din egen forbindelse forbliver urørt.
- Stabilitet. Ingen sleep, ingen wifi-dropouts midt i et crawl, en stabil datacenter-forbindelse, og et sted at akkumulere resultater.
Stakken, og hvad hver del har brug for
To meget forskellige vægtklasser, og at vælge det forkerte abonnement spilder penge eller udsulter jobbet:
- httpx / requests (Python) — til API'er, JSON-endpoints og statisk HTML. Dette er let: processen sidder i titusinder af megabytes, netværks-bundet, ikke CPU-bundet. En $3 Nano (1 vCPU / 1 GB) kører dette komfortabelt, selv med samtidighed via
asyncio. - Playwright / headless Chromium — til JavaScript-renderede sites, hvor du har brug for en rigtig browser. Dette er den tunge. Headless Chromium er cirka 300–400 MB per browser-instans, plus 100–200 MB per åben kontekst/fane, plus din runtime. Budgettér:
- $5 Micro (2 vCPU / 2 GB) — en eller to browser-kontekster ad gangen.
- $8 Small (4 vCPU / 4 GB) — flere parallelle kontekster, eller tungere sider.
Tommelfingerreglen: din kode er næsten aldrig flaskehalsen — Chromium er. Dimensionér efter browseren, ikke efter scraperen.
Planlægning: systemd-timer frem for cron
cron virker, men en systemd-timer er den bedre standard på en server, du vedligeholder: logs gennem journalctl, indhentning hvis boksen var nede, og inspicerbar per-kørsels-status. En minimal opsætning:
# /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 # se kørsler
Persistent=true er den bid, cron ikke kan: hvis serveren var slukket ved kørselstid, affyrer jobbet én gang ved boot i stedet for stille at springe over.
Hvor resultater går
Hold det simpelt og match volumen: SQLite til strukturerede data, du vil forespørge (én fil, nul opsætning), CSV til hurtige tabel-dumps, eller et S3-kompatibelt objektlager, når resultater vokser ud af boksen, eller du vil have dem væk fra serveren. Rotér dine logs (logrotate eller journald-grænser), så en snakkesalig scraper ikke langsomt fylder disken.
Den ærlige del: udgangs-IP og omdømme
Det er detaljen, der afgør, om din scraper virker i en uge eller bliver blokeret på dag ét.
På et NAT-abonnement deler udgående trafik én udgangs-IP med andre kunder. Den IP's omdømme er delt — en nabo, der scraper det samme mål, kan få adressen rate-limited, før du sender en eneste forespørgsel. Fint til let, lejlighedsvis scraping; en risiko ved volumen.
En dedikeret IP giver dig dit eget udgangs-omdømme — ingen andens adfærd påvirker det. Men det skærer begge veje: aggressiv scraping brænder din egen rene IP, og når et mål blokerer den, er den blokeret. En dedikeret IP er kontrol, ikke immunitet.
I reel skala har du brug for eksterne proxy-puljer. Ingen enkelt IP — delt eller dedikeret — kan sprede belastning over mange adresser, hvilket er, hvad seriøs scraping mod IP-rate-limitede mål kræver. Proxier er et generisk, tredjeparts-lag, du tilføjer ovenpå; VPS'en kører scraperen, proxy-puljen leverer adresserne. Forvent ikke, at én server-IP laver en proxy-puljes job.
Etik og AUP'en — ikke valgfrit
Scraping bor i en juridisk og etisk gråzone, så vær klarøjet:
- Respektér rate limits og robots.txt. Sæt dine forespørgsler ned. En høflig scraper ligner trafik; en uhøflig ligner et angreb.
- DoS ikke dit mål. At hamre et site, indtil det vælter, er ikke scraping, det er et denial-of-service — og det er en overtrædelse af acceptabel brug her, der får tjenesten termineret.
- Scrap kun, hvad du har lov til. Lovlig, tilladt dataindsamling er linjen. Kryds den, og det er på dig.
Bundlinjen
En VPS er det rigtige hjem for en scraper: altid-tændt, planlagt og væk fra din hjemme-IP. Match abonnementet til stakken — $3 Nano til httpx, $5 Micro til $8 Small til Playwright — planlæg med en systemd-timer, og vær ærlig om IP'er: delt udgang deler omdømme, en dedikeret IP er din at opbygge eller brænde, og reel skala betyder proxy-puljer. Lås boksen ned først med ny-VPS-sikkerhedstjeklisten, dimensionér den rigtigt ved hjælp af VPS-dimensioneringsguiden, og hvis betal-uden-et-kort-privatliv betyder noget, er den anonyme VPS-opdeling den ærlige version. Scrap ansvarligt — AUP'en er reel.
Klar til at scrape? Et Micro-abonnement er en solid start; store samtidige crawls klarer sig bedre på Small.
Kommentarer
Ingen kommentarer endnu. Vær den første.