jsoup kann die Seite über einen HTTP-Proxy abrufen und die Antwort im selben Aufruf parsen:

Document page = Jsoup.connect("https://www.example.com/")
    .proxy("proxy.example", 8080)
    .get();

Hostname und ganzzahliger Port kennzeichnen den Proxy. Wähle für erlaubte Anfragen an öffentliche Seiten einen HTTP-Endpunkt aus deinem Dienst oder aus der HTTP-Proxy-Liste. Die an connect übergebene URL bleibt die Seite, die du willst. Du musst das HTML nicht über eine separate URLConnection in einen String herunterladen, nur um diese Route hinzuzufügen.

proxy(String, int) wählt einen HTTP-Proxy für diese Anfrage. Eine Portnummer wie 1080 ändert ihr Protokoll nicht in SOCKS; der Proxy-Endpunkt muss den Typ sprechen, der konfiguriert wird. jsoup bietet außerdem eine Überladung, die java.net.Proxy akzeptiert, aber die Unterstützung einer bestimmten Route hängt weiterhin von der verwendeten HTTP-Implementierung ab.

Gib jedem Worker seine eigene Anfrage

Eine Option auf Anfrageebene erleichtert parallele Arbeit mehr als das Ändern von JVM-Systemeigenschaften um jeden Download herum. Halte die veränderliche Anfrage für jeden Worker getrennt. Modernes jsoup kann die Einstellungen und den Cookie-Speicher einer Sitzung teilen, während es eine neue Anfrage erstellt:

Connection session = Jsoup.newSession();
Document first = session.newRequest()
    .url("https://www.example.com/one")
    .proxy("proxy-a.example", 8080)
    .get();
Document second = session.newRequest()
    .url("https://www.example.com/two")
    .proxy("proxy-b.example", 8080)
    .get();

Die obigen Aufrufe laufen der Klarheit halber nacheinander. Wenn Arbeit gleichzeitig verteilt wird, erstelle die Anfragen unabhängig, statt den Proxy an einer laufenden Connection zu ändern. Eine gemeinsame Sitzung teilt auch Cookies; verwende verschiedene Sitzungen, wenn die Browsing-Identitäten getrennt bleiben sollen.

Diese Schnittstellen sind in jsoup 1.21.2 vorhanden. Die argumentlose Schnittstelle newRequest() stammt aus 1.14.1, daher sollte eine ältere Anwendung ihre Abhängigkeit prüfen, bevor sie das Sitzungsbeispiel übernimmt.

Anmeldedaten sind eine weitere Voraussetzung für einen authentifizierten Proxy. Eine erfolgreiche Routenwahl liefert kein Konto, und eine Proxy-Aufforderung zu erhalten ist etwas anderes, als keine Verbindung zu ihrem Port herstellen zu können.

Ähnliche Artikel