آپ کے لیپ ٹاپ پر ایک scraper ٹھیک ہے جب تک آپ اسے run کے بیچ بند نہ کریں، آپ کا home IP rate-limit نہ ہو، یا آپ چاہیں وہی job ہر گھنٹے چلے چاہے آپ جاگ رہے ہوں یا نہ۔ اسے ایک VPS پر منتقل کرنا تینوں ٹھیک کرتا ہے: یہ 24/7 اوپر رہتا ہے، یہ آپ کے home IP کی ساکھ نہیں جلاتا، اور cron یا ایک systemd timer اسے شیڈول پر آپ کے بغیر چلاتا ہے۔ یہ رہا اسے کیسے سیٹ کریں، آپ کو دراصل کتنا سرور چاہیے، اور وہ حصے جو زیادہ تر گائیڈز خاموشی سے چھوڑتی ہیں۔
ایک VPS اس کے لیے آپ کی مشین کو کیوں مات دیتا ہے
- 24/7 اور scheduled۔ ایک scraper جو ہر گھنٹے چلے اسے ایک ہمیشہ-آن host چاہیے۔ ایک لیپ ٹاپ نہیں۔
- آپ کا home IP صاف رہتا ہے۔ گھر سے scraping کا مطلب آپ کا residential IP rate-limits اور blocks لیتا ہے۔ اسے ایک سرور سے کریں اور آپ کا اپنا کنکشن اچھوتا رہتا ہے۔
- استحکام۔ کوئی sleep نہیں، crawl کے بیچ کوئی wifi drop نہیں، ایک مستحکم datacenter کنکشن، اور نتائج جمع کرنے کی ایک جگہ۔
stack، اور ہر حصے کو کیا چاہیے
دو بہت مختلف وزن-طبقے، اور غلط پلان چننا پیسہ ضائع کرتا یا job کو بھوکا رکھتا ہے:
- httpx / requests (Python) — APIs، JSON endpoints، اور static HTML کے لیے۔ یہ ہلکا ہے: process دسیوں megabytes میں بیٹھتا ہے، network-bound، CPU-bound نہیں۔ ایک $3 Nano (1 vCPU / 1 GB) اسے آرام سے چلاتا ہے،
asyncioکے ذریعے concurrency کے ساتھ بھی۔ - Playwright / headless Chromium — JavaScript-rendered سائٹس کے لیے جہاں آپ کو ایک حقیقی browser چاہیے۔ یہ بھاری والا ہے۔ Headless Chromium تقریباً 300–400 MB فی browser instance ہے، plus فی کھلے context/tab 100–200 MB، plus آپ کا runtime۔ بجٹ:
- $5 Micro (2 vCPU / 2 GB) — ایک وقت میں ایک یا دو browser contexts۔
- $8 Small (4 vCPU / 4 GB) — کئی متوازی contexts، یا بھاری صفحات۔
قاعدہ: آپ کا code تقریباً کبھی bottleneck نہیں — Chromium ہے۔ browser کے لیے size کریں، scraper کے لیے نہیں۔
Scheduling: cron پر systemd timer
cron چلتا ہے، لیکن ایک ایسے سرور پر جسے آپ سنبھالتے ہیں ایک systemd timer بہتر ڈیفالٹ ہے: journalctl کے ذریعے logs، باکس down ہونے پر catch-up، اور inspect کے قابل فی-run status۔ ایک minimal سیٹ اپ:
# /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 # runs دیکھیں
Persistent=true وہ بات ہے جو cron نہیں کر سکتا: اگر سرور run کے وقت آف تھا، تو job خاموشی سے چھوڑنے کے بجائے boot پر ایک بار چلتا ہے۔
نتائج کہاں جاتے ہیں
اسے سادہ رکھیں اور حجم سے میل کرائیں: SQLite structured ڈیٹا کے لیے جسے آپ query کریں گے (ایک فائل، صفر سیٹ اپ)، CSV فوری tabular dumps کے لیے، یا ایک S3-مطابق object store جب نتائج باکس سے بڑھ جائیں یا آپ انہیں سرور سے-باہر چاہیں۔ اپنے logs گھمائیں (logrotate یا journald حدود) تاکہ ایک باتونی scraper آہستہ آہستہ ڈسک نہ بھرے۔
ایماندار حصہ: egress IP اور ساکھ
یہ وہ تفصیل ہے جو فیصلہ کرتی ہے کہ آپ کا scraper ایک ہفتہ چلے گا یا پہلے دن block ہو جائے گا۔
ایک NAT پلان پر، outbound ٹریفک دیگر گاہکوں کے ساتھ ایک egress IP شیئر کرتا ہے۔ اُس IP کی ساکھ shared ہے — وہی ہدف scrape کرتا ایک پڑوسی آپ کے ایک request بھیجنے سے پہلے ایڈریس کو rate-limit کرا سکتا ہے۔ ہلکے، کبھی کبھار scraping کے لیے ٹھیک؛ حجم پر ایک ذمہ داری۔
ایک dedicated IP آپ کو اپنی egress ساکھ دیتا ہے — کسی اور کا رویہ اسے متاثر نہیں کرتا۔ لیکن یہ دونوں طرف کاٹتا ہے: جارحانہ scraping آپ کا اپنا صاف IP جلاتا ہے، اور ایک بار ایک ہدف اسے block کرے، یہ block ہے۔ ایک dedicated IP کنٹرول ہے، استثنا نہیں۔
حقیقی پیمانے پر، آپ کو بیرونی proxy pools چاہئیں۔ کوئی واحد IP — shared یا dedicated — بہت سے addresses بھر میں لوڈ نہیں پھیلا سکتا، جو IP-rate-limited اہداف کے خلاف سنجیدہ scraping کو چاہیے۔ Proxies ایک generic، تیسرے-فریق تہہ ہیں جو آپ اوپر جوڑتے ہیں؛ VPS scraper چلاتا ہے، proxy pool addresses فراہم کرتا ہے۔ ایک سرور IP سے ایک proxy pool کے کام کی توقع نہ رکھیں۔
اخلاقیات اور AUP — اختیاری نہیں
Scraping ایک قانونی اور اخلاقی گرے zone میں رہتا ہے، تو صاف-نظر رہیں:
- rate limits اور robots.txt کا احترام کریں۔ اپنے requests throttle کریں۔ ایک شائستہ scraper ٹریفک جیسا لگتا ہے؛ ایک بدتمیز حملے جیسا۔
- اپنے ہدف کو DoS نہ کریں۔ ایک سائٹ کو گرنے تک پیٹنا scraping نہیں، یہ ایک denial-of-service ہے — اور یہ یہاں ایک acceptable-use خلاف ورزی ہے جو سروس ختم کراتی ہے۔
- صرف وہ scrape کریں جس کی آپ کو اجازت ہو۔ قانونی، اجازت-یافتہ ڈیٹا جمع کرنا لکیر ہے۔ اسے پار کریں اور یہ آپ پر ہے۔
مختصر بات
ایک VPS ایک scraper کے لیے درست گھر ہے: ہمیشہ-آن، scheduled، اور آپ کے home IP سے دور۔ پلان کو stack سے میل کرائیں — httpx کے لیے $3 Nano، Playwright کے لیے $5 Micro سے $8 Small — ایک systemd timer سے شیڈول کریں، اور IPs پر ایماندار رہیں: shared egress ساکھ شیئر کرتا ہے، ایک dedicated IP آپ کی بنانے یا جلانے کو ہے، اور حقیقی پیمانے کا مطلب proxy pools ہے۔ پہلے باکس کو new-VPS security checklist سے لاک کریں، اسے VPS sizing گائیڈ استعمال کرتے درست size کریں، اور اگر بغیر-کارڈ ادائیگی کا نجی پن اہم ہو، تو anonymous VPS breakdown ایماندار ورژن ہے۔ ذمہ داری سے scrape کریں — AUP حقیقی ہے۔
scrape کرنے کو تیار؟ ایک Micro پلان ایک ٹھوس آغاز ہے؛ بڑے concurrent crawls Small پر بہتر کرتے ہیں۔
تبصرے
ابھی کوئی تبصرہ نہیں۔ پہلے بنیں۔