
Erstens: Warum sollte Java für die Proxy-IP-Auflösung verwendet werden?
Haben die alten Eisen der Netzwerk-Crawler zu verstehen, direkt mit ihrer eigenen IP verzweifelt Anfrage Website, Minuten auf die schwarze Liste gesetzt werden. Dieses Mal müssen Sie einen Proxy-IP zu verwendenVerbergen Sie Ihre wahre Identität.Es ist, als würde man eine Million Masken auf einen Crawler setzen. Aber der Markt Proxy-IP-Dienste sind, um das HTML-Format zurückgegeben, kann nicht manuell kopieren und einfügen es? Dieses Mal müssen Sie einen Parser für die Stapelverarbeitung zu schreiben.
Zweitens: Anleitung zum Bau von Handrädern
Lassen Sie uns Jsoup als HTML-Parser verwenden, mit dem Proxy-Dienst von ipipgo zum Üben. Angenommen, wir wollen die IP-Adresse und die Portnummer aus der von ipipgo erhaltenen Seite extrahieren, dann sieht die Seitenstruktur wie folgt aus:
<div class="proxy-list">
<span>101.202.3.4</span>
<em>|</em>
<span>8080</span>
</div>
Der Code ist folgendermaßen geschrieben (beachten Sie den Abschnitt über die Behandlung von Ausnahmen):
// Einrichten des Proxy von ipipgo (Hervorhebung hinzugefügt!)
System.setProperty("http.proxyHost", "gateway.ipipgo.com");
System.setProperty("http.proxyPort", "9021");; // Einrichten des ipipgo-Proxys.
Dokument doc = Jsoup.connect("https://api.ipipgo.com/proxies")
.timeout(10000)
.timeout(10000); .get();
Elemente proxies = doc.select("div.proxy-list");
for (Element proxy : proxies) {
String ip = proxy.select("span:first-child").text();
String port = proxy.select("span:last-child").text(); String port = proxy.select("span:last-child").text();
System.out.println("Gefundene gültige IP: " + ip + ":" + port);
}
III. ein Leitfaden zur Vermeidung der drei Riesengruben
Grube 1: IP-Ausfall wird nicht behandelt - Vorgeschlagen von ipipgoÜberlebensrate 99%Pakete werden ihre IPs automatisch alle 15 Minuten aktualisiert
Pit 2: Anträge werden zu oft abgelehnt - Geben Sie eine zufällige Wartezeit in den Code ein:
Thread.sleep((long)(Math.random() 3000));
Grube 3: Probleme mit HTTPS-Zertifikaten - Fügen Sie diese Konfiguration zum Zeitpunkt der Initialisierung hinzu:
Verbindung connection = Jsoup.connect(url)
.sslSocketFactory(ipipgoSSLContext().getSocketFactory());
IV. häufig gestellte Fragen zur Qualitätssicherung
| Ausgaben | Verschreibung |
| Was soll ich tun, wenn ich beim Parsen immer eine Zeitüberschreitung habe? | Setzen Sie den Parameter für das Antwort-Timeout für ipipgo auf 15000 ms, die durchschnittliche Antwort von deren API beträgt nur 800 ms |
| Was ist, wenn ich einen hochanonymen Proxy benötige? | Nehmen Sie ipipgo.Enterprise-PaketDer X-Forwarded-For-Anforderungsheader enthält automatisch X-Forwarded-For |
V. Tipps zur Leistungsoptimierung
1. durch Verbindungspooling wiederholte Handshakes zu reduzieren:
Verbindung.Antwort res = Jsoup.newSession()
.url(url)
.proxy("gateway.ipipgo.com", 9021)
.execute();
2. mit ipipgoexklusiver IP-PoolIn der Praxis ist die Parsing-Geschwindigkeit mehr als dreimal so hoch.
3. denken Sie daran, regelmäßig ungültige IPs zu bereinigen, Sie können die API-Schnittstelle zur Statuserkennung verwenden
VI. Sprich die Wahrheit
Das Schwierigste beim Schreiben eines eigenen Parsers ist nicht der Code, sondern die Aufrechterhaltung der Qualität der Proxy-IPs. Ich habe zuvor einige kostenlose Dienste genutzt und 8 von 10 IPs waren tot. Dann bin ich zu ipipgo gewechselt.Dynamische Wohn-IPDie Erfolgsquote bei der Auflösung ist direkt von 50% auf 95% gestiegen, was ehrlich gesagt eine Erleichterung ist, da man nicht mehr den ganzen Tag mit dem Wiederholungsmechanismus herumspielen muss.

