Dizüstündeki bir kazıyıcı, onu çalışırken kapatana, ev IP'in hız sınırına takılana ya da aynı işin uyanık olsan da olmasan da her saat çalışmasını isteyene dek gayet iyidir. Onu bir VPS'e taşımak üçünü de düzeltir: 7/24 ayakta kalır, ev IP'inin itibarını yakmaz ve cron ya da bir systemd zamanlayıcısı onu sen olmadan zamanında çalıştırır. İşte bunu nasıl kuracağın, gerçekte ne kadar sunucuya ihtiyacın olduğu ve çoğu rehberin sessizce atladığı parçalar.
Neden bir VPS bunun için makineni yener
- 7/24 ve zamanlanmış. Saatte bir çalışan bir kazıyıcı her zaman açık bir barındırıcı ister. Bir dizüstü değildir.
- Ev IP'in temiz kalır. Evden kazımak, konut IP'inin hız sınırlarını ve engellemeleri yemesi demektir. Bir sunucudan yap, kendi bağlantın el değmemiş kalsın.
- İstikrar. Uyku yok, tarama ortasında wifi düşmesi yok, istikrarlı bir veri merkezi bağlantısı ve sonuçları biriktirecek bir yer.
Yığın ve her parçanın ihtiyaçları
Çok farklı iki ağırlık sınıfı ve yanlış planı seçmek ya para israf eder ya da işi aç bırakır:
- httpx / requests (Python) — API'ler, JSON uçları ve statik HTML için. Bu hafiftir: süreç onlarca megabaytta oturur, ağ-bağımlıdır, CPU-bağımlı değil. Bir 3 $ Nano (1 vCPU / 1 GB) bunu rahatça çalıştırır,
asyncioile eşzamanlılık dahil. - Playwright / başsız Chromium — gerçek bir tarayıcıya ihtiyaç duyduğun JavaScript-render'lı siteler için. Ağır olan bu. Başsız Chromium tarayıcı örneği başına kabaca 300–400 MB, artı açık bağlam/sekme başına 100–200 MB, artı çalışma zamanın. Bütçe:
- 5 $ Micro (2 vCPU / 2 GB) — aynı anda bir ya da iki tarayıcı bağlamı.
- 8 $ Small (4 vCPU / 4 GB) — birkaç paralel bağlam ya da daha ağır sayfalar.
Genel kural: kodun neredeyse hiçbir zaman darboğaz değildir — Chromium'dur. Kazıyıcı için değil, tarayıcı için boyutlandır.
Zamanlama: cron yerine systemd zamanlayıcısı
cron çalışır ama baktığın bir sunucuda systemd zamanlayıcısı daha iyi bir varsayılandır: journalctl üzerinden loglar, kutu kapalıysa telafi ve inceleyebilir çalıştırma başına durum. Minimal bir kurulum:
# /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 # çalıştırmaları izle
Persistent=true, cron'un yapamadığı kısımdır: sunucu çalıştırma anında kapalıysa, iş sessizce atlanmak yerine açılışta bir kez tetiklenir.
Sonuçlar nereye gider
Basit tut ve hacme uydur: sorgulayacağın yapılandırılmış veri için SQLite (tek dosya, sıfır kurulum), hızlı tablo dökümleri için CSV ya da sonuçlar kutuyu aştığında veya onları sunucu dışında istediğinde S3 uyumlu bir nesne deposu. Loglarını döndür (logrotate ya da journald sınırları) ki geveze bir kazıyıcı diski yavaşça doldurmasın.
Dürüst kısım: çıkış IP'si ve itibar
Kazıyıcının bir hafta mı çalışacağını yoksa ilk gün mü engelleneceğini belirleyen ayrıntı budur.
Bir NAT planında, dışa dönük trafik tek bir çıkış IP'sini diğer müşterilerle paylaşır. O IP'nin itibarı paylaşılır — aynı hedefi kazıyan bir komşu, sen tek bir istek göndermeden önce adresi hız sınırına takılabilir. Hafif, ara sıra kazıma için iyi; hacimde bir yükümlülük.
Bir özel IP sana kendi çıkış itibarını verir — başka kimsenin davranışı onu etkilemez. Ama iki tarafı da keser: saldırgan kazıma kendi temiz IP'ni yakar ve bir hedef onu engelledikten sonra engellidir. Bir özel IP dokunulmazlık değil, kontroldür.
Gerçek ölçekte, harici vekil havuzlarına ihtiyacın olur. Tek bir IP — paylaşımlı ya da özel — yükü, IP-hız-sınırlı hedeflere karşı ciddi kazımanın gerektirdiği çok sayıda adrese yayamaz. Vekiller, üstüne eklediğin genel, üçüncü taraf bir katmandır; VPS kazıyıcıyı çalıştırır, vekil havuzu adresleri sağlar. Tek bir sunucu IP'sinin bir vekil havuzunun işini yapmasını bekleme.
Etik ve AUP — isteğe bağlı değil
Kazıma yasal ve etik bir gri bölgede yaşar, o yüzden açık gözlü ol:
- Hız sınırlarına ve robots.txt'ye saygı göster. İsteklerini kıs. Kibar bir kazıyıcı trafiğe benzer; kaba olan bir saldırıya benzer.
- Hedefini DoS'lama. Bir siteyi çökene dek çekiçlemek kazıma değil, hizmet reddidir — ve burada hizmetin sonlandırılmasına yol açan bir kabul edilebilir kullanım ihlalidir.
- Yalnızca izin verilene kazı. Yasal, izin verilen veri toplama çizgidir. Onu aşarsan sorumluluk sende.
Sonuç
Bir VPS, bir kazıyıcı için doğru evdir: her zaman açık, zamanlanmış ve ev IP'inden uzak. Planı yığına uydur — httpx için 3 $ Nano, Playwright için 5 $ Micro'dan 8 $ Small'a — bir systemd zamanlayıcısıyla zamanla ve IP'ler konusunda dürüst ol: paylaşımlı çıkış itibarı paylaşır, bir özel IP inşa edecek ya da yakacak olandır ve gerçek ölçek vekil havuzları demektir. Önce kutuyu yeni-VPS güvenlik kontrol listesiyle kilitle, VPS boyutlandırma rehberini kullanarak doğru boyutlandır ve kartsız-ödeme gizliliği önemliyse, anonim VPS dökümü dürüst sürümdür. Sorumlu kazı — AUP gerçektir.
Kazımaya hazır mısın? Bir Micro planı sağlam bir başlangıçtır; büyük eşzamanlı taramalar Small üzerinde daha iyi gider.
Yorumlar
Henüz yorum yok. İlk olun.