
I. Warum werden Crawler immer blockiert? Versuchen Sie diese Methode
Jeder, der sich mit Datenerfassung beschäftigt, weiß, dass das größte Problem beim Schreiben eines Crawlers in PHP darin besteht, dass dieIP gesperrtIm Folgenden finden Sie ein Beispiel für ein Preisvergleichstool, an dem ich in den letzten Tagen gearbeitet habe. Vor ein paar Tagen, um einen Freund zu helfen, einen Preisvergleich Tool zu tun, nur eine halbe Stunde laufen, um 403 verboten, wütend ihn gerade auf die Tastatur zu schießen erhalten. Dieses Mal haben wir den großen Killer zu opfern - Proxy-IP. Dieses Ding ist wie ein Crawler trägt eine Vielzahl von Masken, jede Anfrage für ein neues Gesicht, die Website kann einfach nicht zwischen einer Person zu unterscheiden ist eine Maschine.
Zweitens, Hand lehren Sie CURL-Erweiterung zu installieren
Vergewissern Sie sich, dass Sie die CURL-Erweiterung auf Ihrem Server installiert haben (oder gehen Sie an die Wand, wenn Sie das nicht tun). Öffnen Sie die Datei php.ini und suchen Sie diese Zeile:
;extension=curl
Entfernen Sie das führende Semikolon. Starten Sie Apache/Nginx neu. schreiben Sie ein Testskript:
if(function_exists('curl_version')){
echo 'CURL wurde aktiviert';
} else {
echo 'Beeilt euch und installiert die Erweiterung!' ;
}
Proxy-IP-Zugangscode
Hier ist der Punkt! Nutzen Sie den Proxy-Service von ipipgo, ihr Haus bietetDynamische WohnungsvermittlerDie getestete Stabilität ist gut. Sehen Sie sich diesen Kerncode an:
$proxy = 'gateway.ipipgo.com:9021'; //Adresse des Proxy-Servers
$auth = 'benutzername:passwort'; //im ipipgo-Backend abrufen
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'Ziel-URL');
curl_setopt($ch, CURLOPT_PROXY, $proxy);
curl_setopt($ch, CURLOPT_PROXYUSERPWD, $auth); curl_setopt($ch, CURLOPT_PROXYUSERPWD, $auth);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_TIMEOUT, 30); curl_setopt($ch, CURLOPT_TIMEOUT, 30);
$result = curl_exec($ch);
if(curl_errno($ch)){
echo 'Fehler: '.curl_error($ch); }
}
curl_close($ch); }
Viertens kann man durch die Vermeidung dieser Gruben zwei Stunden sparen
Drei häufige Fehler, die Neulinge machen:
| Schlagloch | eine Angelegenheit regeln |
|---|---|
| Die Proxy-IP funktioniert nicht. | Prüfen Sie zunächst den HTTP_CODE mit curl_getinfo |
| Häufige Zeitüberschreitungen | Setzen Sie die Zeitüberschreitung auf mehr als 30 Sekunden |
| Validierungsfehler | Kontostatus im ipipgo-Backend prüfen |
V. Das Geheimnis der Verdoppelung der Hebeeffizienz
Crawler mit einem Thread zu langsam? Setzen Sie auf Multithreading! Benutzen Sie PHP's curl_multi Familie von Funktionen mit ipipgo'sMulti-Channel-AgentenDie Geschwindigkeit nimmt sofort zu. Merken Sie sich die Einstellungen:
curl_setopt($ch, CURLOPT_FORBID_REUSE, 1); /Verbindungsmultiplexing deaktivieren
curl_setopt($ch, CURLOPT_FRESH_CONNECT, 1); //Neue Verbindungen erzwingen
VI. häufig gestellte Fragen QA
F: Was sollte ich tun, wenn meine Proxy-IP plötzlich ausfällt?
A: Aktivieren Sie die automatische IP-Ersatzfunktion im ipipgo-Hintergrund und stellen Sie sie so ein, dass sie alle 5 Minuten wechselt
F: Was sollte ich tun, wenn ich HTTPS-Websites erfassen möchte?
A: Fügen Sie es in der Curl-Konfiguration hinzu:
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
F: Wie kann ich für langsame Proxys optimieren?
A: Vorrangig werden ipipgosInländische BGP-LeitungDie Verzögerung kann innerhalb von 200 ms gesteuert werden.
VII. Sagen Sie etwas, das von Herzen kommt
Nach so vielen Jahren des Crawlings ist die Proxy-IP-Sache wirklich nur noch eine Frage der Zeit. Einen eigenen IP-Pool zu pflegen ist zu viel Arbeit, also kann man auch einfach einen fertigen Dienst nutzen. Wie ipipgo, der Folgendes unterstütztnach Volumen bezahlens, besonders freundlich zu kleinen Projekten. Schließlich möchte ich Sie daran erinnern: sammeln, um mit der Website-Roboter-Vereinbarung entsprechen, nicht zum Absturz bringen den menschlichen Server!

