jsoup może pobrać stronę przez proxy HTTP i przeanalizować odpowiedź w tym samym wywołaniu:

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

Nazwa hosta i całkowity port identyfikują proxy. W przypadku dozwolonych żądań do stron publicznych wybierz punkt końcowy HTTP z Twojej usługi lub z listy proxy HTTP. Adres URL przekazany do connect pozostaje stroną, której chcesz. Nie musisz pobierać HTML do łańcucha za pomocą osobnego URLConnection tylko po to, aby dodać tę trasę.

proxy(String, int) wybiera proxy HTTP dla tego żądania. Numer portu taki jak 1080 nie zmienia jego protokołu na SOCKS; punkt końcowy proxy musi obsługiwać konfigurowany typ. jsoup udostępnia także przeciążenie przyjmujące java.net.Proxy, ale obsługa konkretnej trasy nadal zależy od używanej implementacji HTTP.

Daj każdemu pracownikowi własne żądanie

Opcja na poziomie żądania ułatwia pracę równoległą bardziej niż zmiana właściwości systemowych JVM wokół każdego pobierania. Trzymaj zmienne żądanie osobno dla każdego pracownika. Nowoczesny jsoup może współdzielić ustawienia i magazyn plików cookie sesji, tworząc nowe żądanie:

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();

Powyższe wywołania działają sekwencyjnie dla jasności. Jeśli praca jest rozdzielana jednocześnie, twórz żądania niezależnie, zamiast zmieniać proxy na jednym działającym Connection. Współdzielona sesja współdzieli także pliki cookie; używaj różnych sesji, gdy tożsamości przeglądania mają pozostać rozdzielone.

Te interfejsy są obecne w jsoup 1.21.2. Interfejs newRequest() bez argumentów pochodzi z 1.14.1, więc starsza aplikacja powinna sprawdzić swoją zależność przed przyjęciem przykładu z sesją.

Poświadczenia są dodatkowym wymaganiem dla uwierzytelnionego proxy. Skuteczny wybór trasy nie dostarcza konta, a otrzymanie wyzwania proxy różni się od niepowodzenia połączenia z jego portem.

Powiązane artykuły