Ile nagród potrzebujesz do skrobania?

Praktyczne ramy obliczeniowe do obliczania puli proxy w oparciu o liczbę docelową, wielkość zapotrzebowania, potrzeby rotacji i budżet. Zawiera wzory i tabele wielkości.

Ile nagród potrzebujesz do skrobania?

Dlaczego liczenie proxy ma znaczenie dla skracania stron internetowych

Jedno z pierwszych pytań, które dotyczą każdego projektu, jest zwodniczo proste: Ile proxy naprawdę potrzebuję? Użyj zbyt mało, a twoje IP zostaną zakazane w ciągu kilku minut. Użyj zbyt wielu i marnujesz budżet na pojemność, której nigdy nie dotkniesz. Właściwa liczba zależy od miejsc docelowych, głośności żądania, strategii rotacji i tolerancji bloków.

Ten przewodnik zapewnia praktyczne ramy obliczeniowe, dzięki czemu możesz z pewnością zmierzyć swoją pulę proxy, bez względu na to, czy skrobiesz dziesięć stron dziennie czy dziesięć milionów.

Jeśli jesteś nowy w drapaniu proxy, zacząć od naszego Kompletny przewodnik do Web Scraping Proxies dla koncepcji fundamentalnych.

Wzór podstawowy

W najprostszym przypadku liczba równoległych IP, których potrzebujesz, to:

required_ips = (requests_per_minute) / (safe_rpm_per_ip)

Gdzie safe _ rpm _ per _ ip jest maksymalną liczbą żądań jeden IP może utrzymać na miejscu docelowym bez uruchamiania bloków. Jest to bardzo zróżnicowane w zależności od celu:

Typ docelowyBezpieczny RPM na IPUwagi
Małe blogi / strony statyczne20- 60Minimalny antybot
Handel elektroniczny (Shopify, WooCommerce)5- 15Ograniczenie umiarkowanej stopy procentowej
Główne platformy (Amazon, Google)1- 5Wykrywanie agresywne
Media społecznościowe (LinkedIn, Instagram)0, 5- 2Bardzo rygorystyczne egzekwowanie

Przykład obliczania

Załóżmy, że musisz zeskrobać 50.000 stron produktów z witryny e-commerce codziennie, kończąc pracę w ciągu 8 godzin:

# Target: 50,000 pages in 8 hours
requests_per_minute = 50000 / (8 * 60)  # ≈ 104 RPM
safe_rpm_per_ip = 10                     # e-commerce average
required_ips = 104 / 10  # ≈ 11 concurrent IPs

W praktyce należy dodać Bufor 30- 50% dla powtórzeń, awarii, i rate- limit ochłodzenia. Więc realistyczna potrzeba jest wokół 15- 17 równoczesnych IP.

Czynniki, które wpływają na Twoje wymagania proxy

1. Sophystication Site

Strony z zaawansowanym systemy antybotowe wymagają więcej IP, ponieważ każdy IP może składać mniej wniosków przed oznaczeniem. Google, Amazon i główne platformy społeczne inwestują w pobieranie odcisków palców i analizę zachowań. Budżet na 3- 5x więcej IP niż sugeruje formuła bazowa w odniesieniu do tych stron.

2. Prośba o głośność i częstotliwość

Ciągłe skrobanie (monitoring 24 / 7) wymaga więcej IP niż pracy wsadowej. Jeśli uruchomisz dzienną partię, możesz obracać się przez basen agresywnie podczas okna, a następnie pozwolić IP ochłodzić. Dla monitorowania w czasie rzeczywistym, każdy IP pozostaje aktywny dłużej, zwiększając swoje całkowite zapotrzebowanie.

3. Dystrybucja geograficzna

Jeśli potrzebujesz danych z wielu regionów (lokalne ceny, geospecyficzne wyniki wyszukiwania), potrzebujesz IP w każdej docelowej geografii. W 10 krajach może być potrzeba 15 IP dla każdego kraju, co oznacza łącznie 150. Sprawdź dostępne Lokalizacje ProxyHat by zaplanować twoją geodystrybucję.

4. Sesja vs Wymagania obrotowe

Niektóre zadania (login przepływów, wielostronicowa analiza checkout) wymagają lepkie sesje gdzie ten sam OD utrzymuje się przez kilka minut. To wiąże IP dłużej, zmniejszając efektywne wykorzystanie puli. Czyste zbieranie danych bez stanu sesji może obracać się na każdym wniosku, używając każdego IP bardziej efektywnie.

5. Mieszkalne vs Datacenter

Mieszkalne IP mają wyższe wyniki zaufania i może złożyć więcej wniosków przed zakazem, więc może potrzebować mniej z nich. Ale kosztują więcej na GB. Datacenter IP są tańsze, ale flagowane szybciej, więc trzeba większy basen. Aby uzyskać głębsze porównanie, zobacz Residential vs Datacenter vs Mobile Proxies.

Stoły wielkości według przypadku użycia

Use CaseWnioski dzienneZalecane IPTyp proxy
Mały audyt SEO (1 strona)1,000- 5,0005- 10Mieszkalne
Monitorowanie cen produktów10 000 - 50 00015- 30Mieszkalne
SERP tracking (100 słów kluczowych)5 000-20 00010- 25Mieszkalne
Katalog e-commerce scrating50 000-200 00030- 80Mieszkalne
Agregacja danych na dużą skalę500 000 +100- 500 +Obroty mieszkalne

Obliczanie całkowitej szerokości pasma

Liczba proxy to jeden wymiar, szerokość pasma to drugi. Szacuj całkowity transfer danych:

# Average page sizes
static_page = 50 KB      # HTML only
dynamic_page = 200 KB    # HTML + JSON/API responses
full_render = 2-5 MB     # with all assets (headless browser)
# Example: 50,000 pages/day × 200 KB average
daily_bandwidth = 50000 * 200 / 1024 / 1024  # ≈ 9.5 GB/day

To pomaga wybrać prawo Plan ProxyHat w oparciu o potrzeby IP i przepustowości.

Wdrażanie: Dynamiczne łączenie puli

Zamiast zgadywać statycznie, wdrożyć dynamiczny rozmiar puli, która dostosowuje się do realistycznych warunków. Oto przykład przy użyciu bramy ProxyHat z adaptive concurrency:

Przykład Pythona

import asyncio
import aiohttp
from dataclasses import dataclass, field
from time import time
@dataclass
class PoolSizer:
    """Dynamically adjusts concurrent proxy connections based on success rate."""
    min_concurrent: int = 5
    max_concurrent: int = 100
    target_success_rate: float = 0.95
    current_concurrent: int = 10
    results: list = field(default_factory=list)
    def record(self, success: bool):
        self.results.append((time(), success))
        # Keep only last 100 results
        self.results = self.results[-100:]
    @property
    def success_rate(self) -> float:
        if not self.results:
            return 1.0
        return sum(1 for _, s in self.results if s) / len(self.results)
    def adjust(self):
        rate = self.success_rate
        if rate >= self.target_success_rate and self.current_concurrent < self.max_concurrent:
            # Success rate is good — try more concurrency
            self.current_concurrent = min(self.current_concurrent + 2, self.max_concurrent)
        elif rate < self.target_success_rate * 0.9:
            # Success rate dropping — reduce concurrency
            self.current_concurrent = max(self.current_concurrent - 5, self.min_concurrent)
async def scrape_with_adaptive_pool(urls: list[str]):
    sizer = PoolSizer()
    proxy = "http://USERNAME:PASSWORD@gate.proxyhat.com:8080"
    semaphore = asyncio.Semaphore(sizer.current_concurrent)
    async with aiohttp.ClientSession() as session:
        async def fetch(url):
            async with semaphore:
                try:
                    async with session.get(url, proxy=proxy, timeout=aiohttp.ClientTimeout(total=30)) as resp:
                        success = resp.status == 200
                        sizer.record(success)
                        return await resp.text() if success else None
                except Exception:
                    sizer.record(False)
                    return None
        for batch_start in range(0, len(urls), sizer.current_concurrent):
            batch = urls[batch_start:batch_start + sizer.current_concurrent]
            await asyncio.gather(*[fetch(url) for url in batch])
            sizer.adjust()
            # Update semaphore for next batch
            semaphore = asyncio.Semaphore(sizer.current_concurrent)
            print(f"Concurrent IPs: {sizer.current_concurrent}, Success rate: {sizer.success_rate:.1%}")

Do celów produkcji ProxyHat Python SDK automatycznie obsługuje łączenie połączeń i rotację.

Przykład node.js

const HttpsProxyAgent = require('https-proxy-agent');
const fetch = require('node-fetch');
class AdaptivePoolSizer {
  constructor(min = 5, max = 100) {
    this.min = min;
    this.max = max;
    this.current = 10;
    this.results = [];
    this.targetRate = 0.95;
  }
  record(success) {
    this.results.push({ time: Date.now(), success });
    if (this.results.length > 100) this.results = this.results.slice(-100);
  }
  get successRate() {
    if (!this.results.length) return 1;
    return this.results.filter(r => r.success).length / this.results.length;
  }
  adjust() {
    if (this.successRate >= this.targetRate && this.current < this.max) {
      this.current = Math.min(this.current + 2, this.max);
    } else if (this.successRate < this.targetRate * 0.9) {
      this.current = Math.max(this.current - 5, this.min);
    }
  }
}
async function scrapeWithAdaptivePool(urls) {
  const sizer = new AdaptivePoolSizer();
  const agent = new HttpsProxyAgent('http://USERNAME:PASSWORD@gate.proxyhat.com:8080');
  for (let i = 0; i < urls.length; i += sizer.current) {
    const batch = urls.slice(i, i + sizer.current);
    const results = await Promise.allSettled(
      batch.map(url =>
        fetch(url, { agent, timeout: 30000 })
          .then(res => { sizer.record(res.ok); return res.text(); })
          .catch(() => { sizer.record(false); return null; })
      )
    );
    sizer.adjust();
    console.log(`Concurrent: ${sizer.current}, Success: ${(sizer.successRate * 100).toFixed(1)}%`);
  }
}

Częste błędy, gdy wzrost Pools Proxy

  • Używając tej samej liczby dla wszystkich celów. Basen, który działa dla statycznych blogów nie uda się na Amazon. Zawsze punkt odniesienia dla każdego celu.
  • Ignorowanie nawijania. Nieudane żądania zużywają przepustowość i czas. Współczynnik 20-40% dla agresywnych celów.
  • Nieuwzględnianie wymogów sesyjnych. Jeśli potrzebujesz lepkich sesji dla przepływów logowania, każda sesja łączy IP. Obliczyć w oparciu o równoległe sesje, nie tylko żądać stawki.
  • Zapominanie o potrzebach geograficznych. Dziesięć IP w USA nie pomoże ci zeskrobać wyników w Japonii. Plan na geografię.
  • Przesadzanie "na wszelki wypadek". Z rotacyjnymi proxy mieszkalnymi jak ProxyHat, masz dostęp do dużego basenu automatycznie. Płacisz za przepustowość, nie za liczbę IP w puli. Skup się na wybór odpowiedniego typu proxy Zamiast gromadzić IP.

ProxyHat Advantage: Zarządzanie basenem uproszczone

Dzięki rotacyjnej bramie proxy ProxyHat nie musisz ręcznie zarządzać listą IP. Każda prośba gate.proxyhat.com automatycznie otrzymuje nowe IP z puli milionów. Oznacza to:

  • Brak ręcznego zarządzania listą IP
  • Automatyczna rotacja na każdym wniosku (lub lepkie sesje w razie potrzeby)
  • Dostęp do IP 190 + państwa
  • Opłata za korzystanie z przepustowości, a nie opłaty za IP

Twoja "liczba proxy" skutecznie staje się twoim poziomem współzależności - ile równoczesnych połączeń przebiegasz przez bramę. Zacznij od powyższych formuł, a następnie pozwól na dostosowanie kodu wielkości fine- dostroić go w produkcji.

Dla kompletnego spaceru scrating architektury z proxy, zobacz nasz Kompletny przewodnik do Web Scraping ProxiesAby dowiedzieć się o strategiach rotacji, które uzupełniają rozmiar basenu, przeczytaj Jak scalić strony internetowe bez blokowania.

Często zadawane pytania

Ile proxy potrzebuję do skrobania na małą skalę?

W przypadku małych projektów poniżej 5000 wniosków dziennie, ukierunkowanych na umiarkowanie chronione obiekty, 5- 10 równoległych proxy mieszkaniowe są zazwyczaj wystarczające. Dzięki rotacyjnej bramie, takiej jak ProxyHat, po prostu ustawiasz swój poziom wymiany na 5- 10, a system obsługuje przypisywanie IP.

Czy potrzebuję więcej proxy dla JavaScript- ciężkich stron?

Tak. Bezgłowy scrating przeglądarki jest wolniejszy na żądanie (2- 10 sekund vs 0.5-1 sekundy tylko dla HTML-), co oznacza, że każdy równocześnie przetwarza mniej żądań. Możesz potrzebować 2- 3x, aby utrzymać taką samą przepustowość. Zobacz nasz przewodnik unikanie bloków dla wskazówek optymalizacji.

Czy należy używać proxy mieszkalnych lub danych?

Dla większości zadań scrating, proxy mieszkaniowe oferują wyższe wskaźniki sukcesu i wymagają mniej równoległych połączeń. Proxy Datacenter są tańsze na GB, ale blokują się szybciej, wymagając większej puli. Przeczytaj nasz Porównanie typu proxy szczegółowe wytyczne.

Jak działa obrotowy basen ProxyHat?

Każda prośba przez bramę ProxyHat (gate.proxyhat.com:8080) jest automatycznie przypisany inny adres IP mieszkalny. Nie zarządzasz indywidualnymi IP - kontrolujesz zmienność i system obsługuje rotację. Jest to skuteczniejsze niż utrzymywanie statycznej listy IP.

Gotowy, aby zacząć?

Dostęp do ponad 50 mln rezydencjalnych IP w ponad 148 krajach z filtrowaniem AI.

Zobacz cenyProxy rezydencjalne
← Powrót do Bloga