Dohvaćanje stranice kroz HTTP proxy u jsoupu
Koristi jsoupov HTTP proxy API na razini zahtjeva i stvaraj zasebne zahtjeve kada više radnika dijeli postavke sesije.
jsoup može dohvatiti stranicu kroz HTTP proxy i analizirati odgovor u istom pozivu:
Document page = Jsoup.connect("https://www.example.com/")
.proxy("proxy.example", 8080)
.get();
Naziv hosta i cjelobrojni port identificiraju proxy. Za dopuštene zahtjeve prema javnim stranicama odaberi HTTP završnu točku iz svoje usluge ili s popisa HTTP proxyja. URL predan u connect ostaje stranica koju želiš. Nije potrebno preuzimati HTML u niz zasebnim URLConnectionom samo da bi se dodala ova ruta.
proxy(String, int) odabire HTTP proxy za taj zahtjev. Broj porta poput 1080 ne mijenja njegov protokol u SOCKS; završna točka proxyja mora govoriti vrstu koja se konfigurira. jsoup također nudi preopterećenje koje prihvaća java.net.Proxy, ali podrška za određenu rutu još uvijek ovisi o HTTP implementaciji koja se koristi.
Daj svakom radniku vlastiti zahtjev
Opcija na razini zahtjeva olakšava paralelan rad više od mijenjanja sistemskih svojstava JVM-a oko svakog preuzimanja. Drži promjenjivi zahtjev odvojenim za svakog radnika. Suvremeni jsoup može dijeliti postavke sesije i spremište kolačića dok stvara novi zahtjev:
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();
Gornji pozivi izvode se uzastopno radi jasnoće. Ako se posao raspoređuje istodobno, stvaraj zahtjeve neovisno umjesto da mijenjaš proxy na jednom Connectionu koji je u tijeku. Dijeljena sesija dijeli i kolačiće; koristi različite sesije kada identiteti pregledavanja trebaju ostati odvojeni.
Ta su sučelja prisutna u jsoup 1.21.2. Sučelje newRequest() bez argumenata datira iz 1.14.1, pa starija aplikacija treba provjeriti svoju ovisnost prije prihvaćanja primjera sa sesijom.
Vjerodajnice su dodatni uvjet za autentificirani proxy. Uspješan odabir rute ne daje račun, a primanje proxy izazova razlikuje se od neuspjelog povezivanja s njegovim portom.