Hent en side gennem en HTTP-proxy i jsoup
Brug jsoups HTTP-proxy-API på anmodningsniveau, og opret separate anmodninger, når flere arbejdere deler sessionsindstillinger.
jsoup kan hente siden gennem en HTTP-proxy og parse svaret i samme kald:
Document page = Jsoup.connect("https://www.example.com/")
.proxy("proxy.example", 8080)
.get();
Værtsnavnet og heltalsporten identificerer proxyen. For tilladte anmodninger til offentlige sider skal du vælge et HTTP-endepunkt fra din tjeneste eller fra HTTP-proxylisten. Den URL, der gives til connect, forbliver den side, du ønsker. Du behøver ikke downloade HTML'en til en streng med en separat URLConnection blot for at tilføje denne rute.
proxy(String, int) vælger en HTTP-proxy til den anmodning. Et portnummer som 1080 ændrer ikke dens protokol til SOCKS; proxyens endepunkt skal tale den type, der konfigureres. jsoup eksponerer også en overbelastning, der accepterer java.net.Proxy, men understøttelsen af en bestemt rute afhænger stadig af den HTTP-implementering, der bruges.
Giv hver arbejder sin egen anmodning
En indstilling på anmodningsniveau gør parallelt arbejde lettere end at ændre JVM-systemegenskaber omkring hver download. Hold den mutable anmodning adskilt for hver arbejder. Moderne jsoup kan dele en sessions indstillinger og cookielager, mens den opretter en frisk anmodning:
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();
Kaldene ovenfor kører sekventielt for klarhedens skyld. Hvis arbejdet fordeles samtidigt, skal du oprette anmodningerne uafhængigt i stedet for at ændre proxyen på en Connection under behandling. En delt session deler også cookies; brug forskellige sessioner, når browsingidentiteterne skal forblive adskilte.
Disse grænseflader findes i jsoup 1.21.2. Grænsefladen newRequest() uden argumenter stammer fra 1.14.1, så en ældre applikation bør kontrollere sin afhængighed, før den tager sessionseksemplet i brug.
Legitimationsoplysninger er et yderligere krav til en godkendt proxy. Et vellykket rutevalg leverer ikke en konto, og det at modtage en proxy-udfordring er anderledes end at undlade at oprette forbindelse til dens port.