Obținerea unei pagini printr-un proxy HTTP în jsoup
Folosește API-ul proxy HTTP de la nivelul cererii din jsoup și creează cereri separate când mai mulți lucrători partajează setările sesiunii.
jsoup poate obține pagina printr-un proxy HTTP și poate analiza răspunsul în același apel:
Document page = Jsoup.connect("https://www.example.com/")
.proxy("proxy.example", 8080)
.get();
Numele gazdă și portul întreg identifică proxy-ul. Pentru cererile permise către pagini publice, selectează un endpoint HTTP din serviciul tău sau din lista de proxy-uri HTTP. URL-ul transmis către connect rămâne pagina pe care o dorești. Nu trebuie să descarci HTML-ul într-un șir cu un URLConnection separat doar pentru a adăuga această rută.
proxy(String, int) selectează un proxy HTTP pentru acea cerere. Un număr de port precum 1080 nu îi schimbă protocolul în SOCKS; endpoint-ul proxy-ului trebuie să vorbească tipul care este configurat. jsoup expune și o supraîncărcare care acceptă java.net.Proxy, dar suportul pentru o anumită rută depinde în continuare de implementarea HTTP utilizată.
Dă fiecărui lucrător propria cerere
O opțiune la nivelul cererii face munca paralelă mai ușoară decât modificarea proprietăților de sistem JVM în jurul fiecărei descărcări. Păstrează cererea mutabilă separată pentru fiecare lucrător. jsoup modern poate partaja setările și depozitul de cookie-uri ale unei sesiuni în timp ce creează o cerere nouă:
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();
Apelurile de mai sus rulează secvențial pentru claritate. Dacă munca este distribuită simultan, creează cererile independent în loc să schimbi proxy-ul pe o singură Connection aflată în curs. O sesiune partajată partajează și cookie-uri; folosește sesiuni diferite când identitățile de navigare trebuie să rămână separate.
Aceste interfețe sunt prezente în jsoup 1.21.2. Interfața newRequest() fără argumente datează din 1.14.1, așa că o aplicație mai veche ar trebui să își verifice dependența înainte de a adopta exemplul cu sesiune.
Acreditările sunt o cerință suplimentară pentru un proxy autentificat. O selecție reușită a rutei nu furnizează un cont, iar primirea unei provocări din partea proxy-ului este diferită de eșecul conectării la portul acestuia.