Hente en side gjennom en HTTP-proxy i jsoup
Bruk jsoups HTTP-proxy-API på forespørselsnivå og lag separate forespørsler når flere arbeidere deler sesjonsinnstillinger.
jsoup kan hente siden gjennom en HTTP-proxy og analysere svaret i samme kall:
Document page = Jsoup.connect("https://www.example.com/")
.proxy("proxy.example", 8080)
.get();
Vertsnavnet og heltallsporten identifiserer proxyen. For tillatte forespørsler til offentlige sider, velg et HTTP-endepunkt fra tjenesten din eller fra HTTP-proxylisten. Nettadressen som sendes til connect forblir siden du vil ha. Du trenger ikke laste ned HTML-en til en streng med en separat URLConnection bare for å legge til denne ruten.
proxy(String, int) velger en HTTP-proxy for den forespørselen. Et portnummer som 1080 endrer ikke protokollen til SOCKS; proxyens endepunkt må snakke typen som konfigureres. jsoup tilbyr også en overbelastning som godtar java.net.Proxy, men støtte for en bestemt rute avhenger fortsatt av HTTP-implementasjonen som brukes.
Gi hver arbeider sin egen forespørsel
Et valg på forespørselsnivå gjør parallelt arbeid enklere enn å endre JVM-systemegenskaper rundt hver nedlasting. Hold den muterbare forespørselen atskilt for hver arbeider. Moderne jsoup kan dele en sesjons innstillinger og cookielager mens den oppretter en ny forespørsel:
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();
Kallene ovenfor kjører sekvensielt for klarhetens skyld. Hvis arbeidet fordeles samtidig, opprett forespørslene uavhengig i stedet for å endre proxyen på én Connection som er i gang. En delt sesjon deler også cookies; bruk forskjellige sesjoner når nettleseridentitetene skal holdes atskilt.
Disse grensesnittene finnes i jsoup 1.21.2. Grensesnittet newRequest() uten argumenter stammer fra 1.14.1, så en eldre applikasjon bør sjekke avhengigheten sin før den tar i bruk sesjonseksempelet.
Påloggingsinformasjon er et ekstra krav for en autentisert proxy. Et vellykket rutevalg leverer ikke en konto, og det å motta en proxy-utfordring er forskjellig fra å mislykkes med å koble til porten.