
Praktisches Tutorial: Python-Agentenpools von Hand erstellen
Alte Crawler wissen, dass Proxy-IP unsere "goldene Glocke" ist. Aber die Proxy Pool Management Tools auf dem Markt sind entweder zu komplex oder zu teuer. Heute verwenden wir reines Python, um eineAsynchroner Greifer + Smart Fusedes Agentenpools, steht der Schlüsselcode für Sie bereit!
Warum wird Ihr Agentenpool immer umgedreht?
Ich habe zu viele Leute gesehen, die Proxy-Pools als "Mülltonnen" behandeln und sie ohne nachzudenken benutzen, wenn sie IPs abfangen. Das Ergebnis ist, dass entweder die IP blockiert wird oder die Geschwindigkeit schildkrötenhaft langsam ist. Ein richtiger Proxy-Pool sollte wie folgt aussehenschlauer ButlerDie IP-Qualität kann automatisch überprüft werden, schlechte IPs können in Sekundenschnelle fusioniert werden, und gute IPs können vorrangig verwendet werden. Hier empfehlen wir die Verwendung von ipipgo's dynamischem Residential Proxy, dessen IP-Überlebenszeit angepasst werden kann, mit unserem Fusionsmechanismus ist eine perfekte Übereinstimmung.
Asynchrone IP Crawl Vorlage
aiohttp importieren
von datetime importieren datetime
async def fetch_ip(api_url):: async with aiohttp.
async with aiohttp.ClientSession() as session.
async with session.get(api_url, proxy="") as session.
proxy="http://user:pass@ipipgo-proxy.com:port") as resp.
return await resp.json()
Beispiel API-Aufruf für ipipgo (denken Sie daran, Ihr Konto zu ersetzen)
IP_API = "https://api.ipipgo.com/dynamic?country=US&duration=15min"
Die Kernschmelze ist die Seele.
Das Design ist wieStromkreissicherungenWenn Sie feststellen, dass eine IP-Antwort eine Zeitüberschreitung aufweist oder einen Ausnahmestatuscode zurückgibt, sichern Sie die IP sofort. Hier ist eine einfache Version der Implementierung:
class IPCircuitBreaker.
def __init__(self): self.broken_ips = {}
self.broken_ips = {}
async def check_ip(self, ip).
Prüfen, ob eine IP verfügbar ist
try: async mit aiohttp.
async mit aiohttp.Timeout(5): async mit session.get('', proxy=ip)
async mit session.get('http://test.com', proxy=ip) as r:: async mit session.get('http://test.com', proxy=ip) as r.
return r.status == 200
async mit session.get(''), proxy=ip: return r.status == 200
self.broken_ips[ip] = datetime.now() Aufzeichnung des Zeitpunkts des Fehlschlags
return False
Wie wähle ich mein IPIPGO-Paket aus?
| Geschäftsszenario | Empfohlene Pakete | Blickwinkel |
|---|---|---|
| Hochfrequenz-Datenerfassung | Dynamischer Wohnungsbau (Unternehmen) | Unterstützt 100+ Anfragen pro Sekunde |
| Langfristiger Stabilisierungsbedarf | Statische Häuser | IP-Überlebenszeit über 24 Stunden |
| Rotation über mehrere Regionen hinweg | Dynamischer Standard | Unterstützung von über 220 Ländern und Regionen |
Leitfaden zur Vermeidung der Grube (QA)
F: Wie oft muss ich eine Proxy-IP verwenden, bevor sie abläuft?
A:Prüfen Sie, ob die IP-Überlebenszeit nicht eingestellt ist; es wird empfohlen, sie im Hintergrund von ipipgo einzustellen.Anpassung der Verjährungsfristenin Verbindung mit dem Zyklus zur Erkennung von Sicherungen im Code.
F: Wie steuern asynchrone Anforderungen die Gleichzeitigkeit?
A: Verwenden Sie Semaphore von asyncio für die Flusskontrolle, lassen Sie den Server nicht denken, dass Sie einen DDOS-Angriff durchführen!
F: Welche Protokolle werden von ipipgo unterstützt?
A: HTTP/HTTPS/SOCKS5 alle handhaben, Kletterrohre, ins diese brauchen socks5 Szene denken Sie daran, das entsprechende Protokoll zu wählen.
Upgrade Play: IP Health Check
Ein privater Tipp für die Jungs: Verwenden Sie dieMehrdimensionaler Scoring-MechanismusBewerten Sie die IP. 60 Punkte für die Reaktionsfähigkeit, 30 Punkte für die Erfolgsquote und 10 Punkte für die Geolokalisierung. Eliminieren Sie jede Woche IPs mit weniger als 80 Punkten, damit die Qualität des Proxy-Pools nicht leidet!
def ip_score(ip).
speed_score = min(60, 60 - (ip.response_time 10))
success_score = 30 ip.success_rate
location_score = 10 if ip.country == target sonst 0
return speed_score + success_score + location_score

