
Praktische Übungen zur Verwendung von Jsoup zum Abrufen von Daten ohne Blockierung der Nummer
Crawler altes Eisen sollte verstehen, jetzt die Website Anti-Climbing mehr und mehr streng. Letzte Woche mein Schüler mit Jsoup gerade packte 200 Stücke von Daten, IP direkt in die schwarze Liste. Heute mit den Jungs nörgeln, wie man Proxy-IP mit Jsoup verwenden, so dass der Crawler ein wenig länger leben.
Überprüfung der Grundfunktionen von Jsoup
Zunächst einmal der grundlegendste Jsoup-Code, für den Neuling, der gerade in die Grube eines Weckrufs kommt. Beachten Sie, daßGehen Sie niemals direkt auf eine kommerzielle WebsiteDie Minuten sind blockiert:
Dokument doc = Jsoup.connect("https://目标网站.com")
.timeout(5000)
.timeout(5000); .get();
Elemente = doc.select(".product-item");
Es wird nicht länger als eine halbe Stunde dauern, bis dieser Code einen Reverse Crawl auslöst, glauben Sie mir nicht? Fragen Sie mich nicht, woher ich das weiß...
Proxy-IPs als Retter in der Not
Websites verlassen sich stark auf diese 3 Tricks, um Crawler zu identifizieren:
| Erkennungsmethode | Antwortprogramm |
|---|---|
| Häufigkeit der IP-Anfragen | Rotation der Proxy-IPs |
| Merkmale des Anfragekopfes | Browser-Simulation |
| Analyse der Verhaltenskurve | Intervall für Zufallsoperationen |
Eines der schädlichsten Dinge ist die IP-Blockierung, d. h. wenn Sie sich auf eine Proxy-IP verlassen müssen, umlit. die Zikade wirft ihren Panzer ab (Idiom); fig. verschwinden und eine leere Hülle zurücklassen. Bei den Proxys von ipipgo für Privatpersonen kann die Website beispielsweise nicht erkennen, ob es sich um eine Maschine oder eine echte Person handelt, da jede Anfrage für eine andere IP einer echten Person gestellt wird.
Jsoup mit Proxy-Code
Kommen wir nun zu den trockenen Dingen. Achten Sie auf den Abschnitt Proxy-Einstellungen:
// Proxy-Informationen von ipipgo
String proxyHost = "gateway.ipipgo.com";
int proxyPort = 9021;
String proxyUser = "Ihr Konto"; int
String proxyPass = "Passwort";
// Proxy-Authentifizierung
Authenticator.setDefault(new Authenticator() {
protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication(proxyUser, proxyPass.toCharArray());
}
});
// Anfrage mit Proxy
Dokument doc = Jsoup.connect("https://目标网站")
.proxy(proxyHost, proxyPort)
.userAgent("Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit...")
.timeout(30000)
.timeout(30000); .get().
Beachten Sie ein paar Boxenstopps:
1. stellen Sie den Timeout nicht zu kurz ein, mehr als 20 Sekunden werden empfohlen.
(2) Der Benutzer-Agent sollte mit einem vollständigen Satz von Browserfunktionen ausgestattet sein.
3. es ist besser, für jede Anfrage eine andere Proxy-IP zu verwenden (die API von ipipgo kann automatisch rotieren)
Erweiterte Anti-Reverse-Crawl-Tipps
Es reicht nicht aus, einen Agenten einzuschalten, man muss auch ein paar Scheuklappen aufsetzen:
// Zufälliges Warten auf die Frequenzerkennung
Thread.sleep((long)(Math.random() 3000 + 2000));
// Den vollständigen Request-Header fälschen
Verbindung conn = Jsoup.connect(url)
.header("Accept-Language", "zh-CN,zh;q=0.9")
.header("Accept-Encoding", "gzip, deflate, br")
.header("Cache-Control", "max-age=0");
Es nützt nichts, den besten Agenten zu benutzen, wenn man nicht auf diese Details achtet. Es ist, als würde man ein Nachthemd tragen, um etwas zu stehlen, und am Ende hat man fluoreszierende Schuhe an den Füßen...
QA-Sitzung
F: Was sollte ich tun, wenn meine Proxy-IP nicht funktioniert?
A: Es wird empfohlen, den dynamischen Residential Proxy von ipipgo zu verwenden. Deren IP-Pool wird jeden Tag um mehr als 2 Millionen aktualisiert und schaltet automatisch um, ohne dass Sie sich darum kümmern müssen.
F: Wie kann ich das CAPTCHA umgehen, wenn ich es sehe?
A: Das gehört in einen anderen technischen Bereich, Sie können mit dem festen Sitzungsproxy von ipipgo arbeiten, um die gleiche IP für den Verifizierungsprozess zu behalten.
F: Ist der Agent zu langsam, um die Effizienz zu beeinträchtigen?
A: Es ist sehr wichtig, den richtigen Agententyp zu wählen. Der statische Rechenzentrumsagent von ipipgo kann die Latenzzeit innerhalb von 200 ms kontrollieren, was für Szenarien geeignet ist, die eine schnelle Reaktion erfordern.
Warum wir ipipgo empfehlen
Nachdem ich so viele Proxy-Dienste genutzt habe, habe ich ipipgo aus drei Hauptgründen abgeschaltet:
- Adjuvansnach Volumen bezahlenProjekte mit geringen Kosten schaden nicht.
- ExklusivitätIP Survival DetectionFunktion, ungültige IP automatisch filtern
- eine vollständigeProtokoll anfordernDas ist besonders praktisch für die Fehlersuche.
Vor kurzem sind sie mit einem Ereignis, neue Benutzer erhalten 1G Verkehr, und wenn Sie sich registrieren, können Sie 20% mehr Verkehr durch Ausfüllen in [JSOUP2023]. Wenn Sie auf die offizielle Website gehen müssen, um einen Blick zu nehmen, hier wird nicht den Link setzen (um nicht zu sagen, zu werben).
Abschließend sei daran erinnert, dass die Technologie ein zweischneidiges Schwert ist, und beim Crawlen von Daten ist auf die Einhaltung derRoboter-Protokollim Gesang antwortenEinschlägige Gesetze und Vorschriften. Setzen Sie sich nicht für ein paar Daten aufs Spiel, das ist es nicht wert!

