En scraper på din laptop är fin tills du stänger den mitt i en körning, din hem-IP rate-limitas, eller du vill att samma jobb körs varje timme oavsett om du är vaken eller inte. Att flytta den till en VPS fixar alla tre: den förblir uppe 24/7, den bränner inte din hem-IP:s rykte, och cron eller en systemd-timer kör den enligt schema utan dig. Här är hur du sätter upp det, hur mycket server du faktiskt behöver, och delarna de flesta guider tyst hoppar över.
Varför en VPS slår din maskin för detta
- 24/7 och schemalagt. En scraper som körs varje timme behöver en värd som alltid är på. En laptop är inte det.
- Din hem-IP förblir ren. Att scrapa hemifrån betyder att din residentiella IP tar rate-limits och blockeringar. Gör det från en server och din egen anslutning förblir orörd.
- Stabilitet. Ingen sömn, inga wifi-drops mitt i en crawl, en stadig datacenter-anslutning, och en plats att ackumulera resultat.
Stacken, och vad varje del behöver
Två väldigt olika viktklasser, och att välja fel plan slösar pengar eller svälter jobbet:
- httpx / requests (Python) — för API:er, JSON-endpoints, och statisk HTML. Detta är lätt: processen sitter i tiotals megabyte, nätverksbunden, inte CPU-bunden. En $3 Nano (1 vCPU / 1 GB) kör detta bekvämt, även med concurrency via
asyncio. - Playwright / headless Chromium — för JavaScript-renderade sajter där du behöver en riktig webbläsare. Detta är den tunga. Headless Chromium är grovt 300–400 MB per browser-instans, plus 100–200 MB per öppen kontext/flik, plus din runtime. Budget:
- $5 Micro (2 vCPU / 2 GB) — en eller två browser-kontexter åt gången.
- $8 Small (4 vCPU / 4 GB) — flera parallella kontexter, eller tyngre sidor.
Tumregeln: din kod är nästan aldrig flaskhalsen — Chromium är det. Dimensionera för webbläsaren, inte scrapern.
Schemaläggning: systemd-timer över cron
cron fungerar, men en systemd-timer är den bättre standarden på en server du underhåller: loggar via journalctl, catch-up om boxen var nere, och inspekterbar per-körnings-status. En minimal uppsättning:
# /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 # watch runs
Persistent=true är biten cron inte kan: om servern var av vid körningstid avfyras jobbet en gång vid boot istället för att tyst hoppas över.
Vart resultat går
Håll det enkelt och matcha volymen: SQLite för strukturerad data du ska fråga (en fil, noll uppsättning), CSV för snabba tabulära dumpar, eller en S3-kompatibel object store när resultat växer ur boxen eller du vill ha dem off-server. Rotera dina loggar (logrotate eller journald-gränser) så att en pratsam scraper inte långsamt fyller disken.
Den ärliga delen: egress-IP och rykte
Detta är detaljen som avgör om din scraper fungerar en vecka eller blir blockerad dag ett.
På ett NAT-plan delar utgående trafik en egress-IP med andra kunder. Den IP:s rykte är delat — en granne som scrapar samma mål kan få adressen rate-limitad innan du skickar en enda förfrågan. Fint för lätt, tillfällig scraping; en risk i skala.
En dedikerad IP ger dig ditt eget egress-rykte — ingen annans beteende påverkar det. Men det skär åt båda hållen: aggressiv scraping bränner din egen rena IP, och när ett mål blockerar den är den blockerad. En dedikerad IP är kontroll, inte immunitet.
I verklig skala behöver du externa proxy-pooler. Ingen enskild IP — delad eller dedikerad — kan sprida last över många adresser, vilket seriös scraping mot IP-rate-limitade mål kräver. Proxyer är ett generiskt, tredjeparts-lager du lägger till ovanpå; VPS:en kör scrapern, proxy-poolen tillhandahåller adresserna. Förvänta dig inte att en server-IP gör en proxy-pools jobb.
Etik och AUP — inte valfritt
Scraping lever i en juridisk och etisk gråzon, så var klarsynt:
- Respektera rate-limits och robots.txt. Throttla dina förfrågningar. En artig scraper ser ut som trafik; en oartig ser ut som en attack.
- DoS:a inte ditt mål. Att hamra en sajt tills den faller är inte scraping, det är en denial-of-service — och det är en acceptable-use-överträdelse här som avslutar tjänsten.
- Scrapa bara vad du får. Laglig, tillåten datainsamling är gränsen. Korsa den och det är på dig.
Slutsatsen
En VPS är det rätta hemmet för en scraper: alltid-på, schemalagd, och bort från din hem-IP. Matcha planet till stacken — $3 Nano för httpx, $5 Micro till $8 Small för Playwright — schemalägg med en systemd-timer, och var ärlig om IP:er: delad egress delar rykte, en dedikerad IP är din att bygga eller bränna, och verklig skala betyder proxy-pooler. Lås ner boxen först med nya-VPS säkerhetschecklistan, dimensionera den rätt med VPS-dimensioneringsguiden, och om betala-utan-kort-integritet spelar roll är den anonyma VPS-genomgången den ärliga versionen. Scrapa ansvarsfullt — AUP är verklig.
Redo att scrapa? Ett Micro-plan är en solid start; stora samtidiga crawls gör det bättre på Small.
Kommentarer
Inga kommentarer än. Bli först.