
Praktische Übungen zur Verwendung von PHP für das Crawling von Webseiten ohne Nummernblockierung
Crawler sollten diese Situation angetroffen haben: gerade packte ein paar Seiten von Daten IP blockiert wurde, vor allem im E-Commerce Preisüberwachung oder Analyse der öffentlichen Meinung beschäftigt, oft von der Ziel-Site, um die schwarze ziehen. In dieser Zeit haben wir auf Proxy-IP verlassen, um fortzufahren, heute nehmen wir PHP zu sagen, wie man mit Proxy-IP spielen, um Daten zu fangen.
Die Wahl des richtigen Proxy-IP-Dienstanbieters ist der erste Schritt zum Erfolg
Es gibt viele Anbieter von Proxy-IP-Diensten auf dem Markt, aber es gibt nicht wirklich viele zuverlässige Anbieter. Hier muss man zugreifen könnenipipgoDie dynamische Wohn-Agent der Familie, persönlich getestet und effektiv. Ihre Heimat IP-Pool wird 2 Millionen + jeden Tag aktualisiert, unterstützt die automatische Umschaltung, und die kritischste ist, dass es optimierte Linien speziell für E-Commerce-Plattformen.
// Beispiel für das Abrufen eines ipipgo-Proxys
$api_url = "https://api.ipipgo.com/getproxy?format=json&key=你的API密钥";
$proxy_data = json_decode(file_get_contents($api_url), true);
// Das Abrufen der Proxy-Informationen sieht wie folgt aus
/
{
"port": 8888, "expire_time": "2024-08-01 12:00
"expire_time": "2024-08-01 12:00:00"
}
/
PHP crawl live code (mit Ausnahmebehandlung)
Der folgende Code ist kampferprobt und konzentriert sich auf die Bereiche Proxy-Einstellungen und Ausnahmebehandlung:
Funktion fetchWithProxy($url) {
$ch = curl_init();
// Holt den neuesten Proxy von ipipgo_proxy
$proxy = get_ipipgo_proxy(); // Wickeln Sie diese Funktion selbst ein!
curl_setopt($ch, CURLOPT_PROXY, $proxy['ip']); // Diese Funktion verpackt sich selbst.
curl_setopt($ch, CURLOPT_PROXYPORT, $proxy['port']); curl_setopt($ch, CURLOPT_PROXYPORT, $proxy['port']);
curl_setopt($ch, CURLOPT_TIMEOUT, 15); // Kurz für Timeout setzen
curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_URL, $url); // Kurzer Punkt für Timeout setzen.
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_URL, $url); // Kurzer Punkt für Timeout setzen.
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); // Zertifikatsüberprüfung überspringen
// Den Browser tarnen
curl_setopt($ch, CURLOPT_HTTPHEADER, [
'Benutzer-Agent: Mozilla/5.0 (Windows NT 10.0) AppleWebKit/537.36'
]).
try {
$output = curl_exec($ch); if(curl_errno($ch))
if(curl_errno($ch)){
throw new Exception('Capture failed: '.curl_error($ch)); }
}
return $output; }
} finally {
curl_close($ch); }
}
}
// Beispielaufruf
$html = fetchWithProxy("https://target-site.com/product/123");
Sechs Tipps, wie man Anti-Crawlern ausweicht
Es reicht nicht aus, einen Agenten zu haben, diese Details sind immer noch blockiert, wenn man ihnen keine Aufmerksamkeit schenkt:
| Maßnahmen gegen Klettern | Hacking-Methode |
|---|---|
| Anfrage Frequenzerkennung | Zufällige Verzögerung 0,5-3 Sekunden, keine festen Intervalle verwenden |
| Browser-Fingerprinting | Benutzer-Agent und Cookies jedes Mal ändern |
| CAPTCHA-Abfrage | Wohnungsvermittler im echten Leben mit ipipgo |
| IP-Verhaltensanalyse | Nicht mehr als 30 Minuten Nutzung für eine einzelne IP |
Häufig gestellte Fragen
F: Warum wurde mein Proxy blockiert, kurz nachdem ich ihn benutzt hatte?
A: kann die IP des Rechenzentrums verwendet haben, ändern Sie ipipgo's Residential Agent zu versuchen, simulieren die reale Benutzerumgebung
F: Was ist mit dem Crawlen von Seiten, die eine Anmeldung erfordern?
A:Zuerst die feste IP verwenden, um die Anmeldung abzuschließen und Cookies zu erhalten, und dann den Proxy-Pool verwenden, um bestimmte Vorgänge durchzuführen
F: Wie berechnen die Agenten von ipipgo?
A: Flexible Abrechnung nach Traffic und IP-Nummer, neue Nutzer erhalten 5 GB Erfahrungs-Traffic, genug für einen Monat testen!
Upgrade Play: Verteilte Crawl-Architektur
Für große Projekte wird eine Redis- und Multiprozess-Architektur empfohlen:
// Pseudocode-Beispiel
$redis = new Redis();
while($proxy = $redis->lpop('ipipgo_proxies')) {
$pid = pcntl_fork();
wenn ($pid == -1) {
die('Unterprozess konnte nicht erstellt werden');
} elseif ($pid) {
// Übergeordneter Prozess wird weiter erstellt
} else {
// Der Kindprozess führt den Abruf durch
fetch_data($proxy);
exit();
}
}
Abschließend möchten wir Sie daran erinnern, Proxy-IPs zu verwenden, um die robots.txt-Regeln der Website einzuhalten, damit der Server nicht zum Stillstand kommt. Sie können sich bei Problemen direkt an den technischen Support von ipipgo wenden, der sehr erfahren im Umgang mit Anti-Climbing-Problemen ist.

