Hämta en sida via en HTTP-proxy i jsoup
Använd jsoups HTTP-proxy-API på förfrågningsnivå och skapa separata förfrågningar när flera arbetare delar sessionsinställningar.
jsoup kan hämta sidan via en HTTP-proxy och tolka svaret i samma anrop:
Document page = Jsoup.connect("https://www.example.com/")
.proxy("proxy.example", 8080)
.get();
Värdnamnet och heltalsporten identifierar proxyn. För tillåtna förfrågningar till offentliga sidor, välj en HTTP-slutpunkt från din tjänst eller från HTTP-proxylistan. URL:en som skickas till connect förblir sidan du vill ha. Du behöver inte ladda ner HTML:en till en sträng med en separat URLConnection bara för att lägga till den här vägen.
proxy(String, int) väljer en HTTP-proxy för den förfrågan. Ett portnummer som 1080 ändrar inte protokollet till SOCKS; proxyns slutpunkt måste tala den typ som konfigureras. jsoup erbjuder också en överlagring som accepterar java.net.Proxy, men stödet för en viss väg beror fortfarande på den HTTP-implementering som används.
Ge varje arbetare sin egen förfrågan
Ett alternativ på förfrågningsnivå gör parallellt arbete enklare än att ändra JVM-systemegenskaper runt varje nedladdning. Håll den muterbara förfrågan separat för varje arbetare. Modern jsoup kan dela en sessions inställningar och cookielager medan den skapar en ny förfrågan:
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();
Anropen ovan körs sekventiellt för tydlighetens skull. Om arbetet fördelas samtidigt, skapa förfrågningarna oberoende i stället för att ändra proxyn på en Connection som pågår. En delad session delar också cookies; använd olika sessioner när webbläsaridentiteterna ska hållas åtskilda.
Dessa gränssnitt finns i jsoup 1.21.2. Gränssnittet newRequest() utan argument härstammar från 1.14.1, så en äldre applikation bör kontrollera sitt beroende innan den antar sessisexemplet.
Inloggningsuppgifter är ett ytterligare krav för en autentiserad proxy. Ett lyckat vägval tillhandahåller inte ett konto, och att ta emot en proxy-utmaning skiljer sig från att misslyckas med att ansluta till dess port.