Hente ei side gjennom ein HTTP-proxy i jsoup
Bruk HTTP-proxy-API-et til jsoup på førespurnadsnivå, og lag separate førespurnader når fleire arbeidarar deler sesjonsinnstillingar.
jsoup kan hente sida gjennom ein HTTP-proxy og parse svaret i same kall:
Document page = Jsoup.connect("https://www.example.com/")
.proxy("proxy.example", 8080)
.get();
Vertnamnet og heiltalsporten identifiserer proxyen. For tillatne førespurnader til offentlege sider, vel eit HTTP-endepunkt frå tenesta di eller frå HTTP-proxylista. URL-en som blir send til connect blir verande sida du vil ha. Du treng ikkje laste ned HTML-en til ein streng med ein separat URLConnection berre for å leggje til denne ruta.
proxy(String, int) vel ein HTTP-proxy for den førespurnaden. Eit portnummer som 1080 endrar ikkje protokollen til SOCKS; endepunktet til proxyen må snakke den typen som blir konfigurert. jsoup tilbyr òg ei overbelasting som godtek java.net.Proxy, men støtte for ei bestemt rute avheng framleis av HTTP-implementasjonen som blir brukt.
Gi kvar arbeidar sin eigen førespurnad
Eit val på førespurnadsnivå gjer parallelt arbeid enklare enn å endre JVM-systemeigenskapar rundt kvar nedlasting. Hald den muterbare førespurnaden skild for kvar arbeidar. Moderne jsoup kan dele innstillingar og cookielager i ein sesjon medan han lagar ein fersk førespurnad:
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();
Kalla ovanfor køyrer sekvensielt for klarleik. Viss arbeidet blir fordelt samstundes, lag førespurnadene sjølvstendige i staden for å endre proxyen på ein Connection som er i gang. Ein delt sesjon deler òg cookies; bruk ulike sesjonar når nettlesaridentitetane skal haldast skilde.
Desse grensesnitta finst i jsoup 1.21.2. Grensesnittet newRequest() utan argument stammar frå 1.14.1, så ein eldre applikasjon bør sjekke avhengnaden sin før han tek i bruk sesjonseksempelet.
Legitimasjon er eit ytterlegare krav for ein autentisert proxy. Eit vellukka ruteval leverer ikkje ein konto, og det å ta imot ei proxy-utfordring er annleis enn å mislukkast med å kople til porten.