
Warum ist der PHP-Crawler immer blockiert? Versuchen Sie diesen Trick
Engagiert in Web-Crawling Brüder wissen, mit PHP zu schreiben, ein Crawler ist die größte Kopfschmerzen IP blockiert. Im vergangenen Monat gibt es einen E-Commerce-Preisvergleich Bruder zu mir zu finden, sagte sein Skript läuft weniger als eine halbe Stunde auf die Abschaltung, verändert drei Server nicht funktionieren. Diese Sache ah, um es offen zu sagen ist nicht gut Proxy IP diese magische Waffe.
// Typischer blockierter Crawler-Code
$html = file_get_contents('https://目标网站.com');
Die oben genannte direkte Verbindung ist wie ein Lautsprecher nehmen und schreien "Ich bin ein Reptil", wenn Sie nicht blockieren Sie blockieren, wer? Wir müssen lernen, Proxy-IP zu verwenden, um zu decken.
Lernen Sie, wie man Crawler mit Proxy-IPs schreibt!
Zunächst möchte ich Ihnen eine wahre Geschichte erzählen: Nachdem ich diesem E-Commerce-Kerl geholfen hatte, auf die Proxy-IP-Lösung umzusteigen, lief das System drei Tage lang ohne jedes Problem. Hier verwenden ipipgo Proxy-Service als eine Kastanie, ihre Schnittstelle ist sehr einfach:
$proxy = 'http://username:password@gateway.ipipgo.com:9020';
$context = stream_context_create([
'http' => [
'proxy' => $proxy, 'request_fulluri' => true
'request_fulluri' => true
]
]);
$html = file_get_contents('destination URL', false, $context);
Achten Sie darauf, nicht in diese Schlaglöcher zu treten:
- ① Vergessen Sie nicht, Ihr Kontopasswort in das von ipipgo erhaltene zu ändern.
- ② verschiedene Proxy-Typen (HTTP/HTTPS/SOCKS5) zur Auswahl des richtigen Ports
- ③ Die Timeout-Einstellung sollte vorzugsweise 10 Sekunden nicht überschreiten.
Praktische Fähigkeiten: Lassen Sie den Crawler eine lange Zeit leben drei Achsen
| Gambit | Was ist zu tun? | Empfohlene Einstellungen |
|---|---|---|
| IP Rotation | Verschiedene Proxys pro Anfrage | Dynamische Pakete von ipipgo |
| Abfragezeitraum | Zufälliger Winterschlaf 1-5 Sekunden | sleep(rand(1,5)) |
| Kopfzeilen-Tarnung | Informationen zum analogen Browser | Einstellung des Benutzer-Agenten |
Geben Sie ein vollständiges Beispiel mit automatischem IP-Wechsel:
function getProxyList() {
// Hier rufen wir die ipipgo API auf, um die aktuelle Proxy-Liste zu erhalten.
return json_decode(file_get_contents('https://api.ipipgo.com/proxy_pool'));
}
$retry = 3;
while($retry--) {
$proxies = getProxyList();
foreach($proxies as $proxy) {
try {
// Einrichten des Proxys und Senden der Anfrage
$html = doRequest($targetUrl, $proxy); // Verarbeiten der Daten...
// Verarbeiten der Daten...
break; }
} catch(Exception $e) {
// Den Fehler im Protokoll vermerken
continue; } catch(Exception $e) { // Protokollieren des Fehlers.
}
}
}
Häufig gestellte Fragen QA
F: Was sollte ich tun, wenn meine Proxy-IP nicht funktioniert?
A: Wählen Sie ipipgo kann dies automatisch ersetzen die IP-Pool von Dienstleistern, ihre Familie jede Minute zu aktualisieren 2000 + neue IP, kann einfach nicht aufgebraucht werden!
F: Worauf sollte ich beim Crawling von HTTPS-Websites achten?
A: Denken Sie daran, diese beiden Sätze in den Code einzufügen:
stream_context_set_default([ 'ssl' => ['verify_peer' => false ] ]);
Allerdings sollte die formale Praxis mit einem CA-Zertifikat konfiguriert werden, Sie können den technischen Support von ipipgo nach einer Lösung fragen.
F: Wie kann ich feststellen, ob ein Mittel wirklich wirksam ist?
A: Schreiben Sie ein Skript zur Heartbeat-Erkennung, das in regelmäßigen Abständen diehttps://api.ipipgo.com/check_ipFür diese Schnittstelle wird ein Statuscode von 200 zurückgegeben, der anzeigt, dass die IP verfügbar ist.
Zum Schluss möchte ich noch ein paar Worte aus tiefstem Herzen sagen: Diese Crawler-Sache ist ein lang anhaltender Kampf mit der Website. Mit der richtigen Proxy-IP ist wie das Tragen einer kugelsicheren Weste, sparen Sie nicht einen halben Stern. Vor allem für groß angelegte Datenerhebung, direkt auf der ipipgo Enterprise Edition-Paket, gibt es spezielle Leute, die Ihnen helfen, Debug-Konfiguration, als ihre eigenen werfen viel stärker.

