Načítanie stránky cez HTTP proxy v jsoup
Použi HTTP proxy API jsoup na úrovni požiadavky a vytváraj samostatné požiadavky, keď viacerí pracovníci zdieľajú nastavenia relácie.
jsoup dokáže načítať stránku cez HTTP proxy a analyzovať odpoveď v tom istom volaní:
Document page = Jsoup.connect("https://www.example.com/")
.proxy("proxy.example", 8080)
.get();
Proxy identifikuje názov hostiteľa a celočíselný port. Pre povolené požiadavky na verejné stránky vyber HTTP koncový bod zo svojej služby alebo zo zoznamu HTTP proxy. URL odovzdaná do connect zostáva stránkou, ktorú chceš. Nemusíš sťahovať HTML do reťazca cez samostatný URLConnection len preto, aby si pridal túto trasu.
proxy(String, int) vyberá HTTP proxy pre danú požiadavku. Číslo portu ako 1080 nezmení jeho protokol na SOCKS; koncový bod proxy musí hovoriť typ, ktorý sa konfiguruje. jsoup tiež ponúka preťaženie prijímajúce java.net.Proxy, ale podpora konkrétnej trasy stále závisí od použitej implementácie HTTP.
Daj každému pracovníkovi vlastnú požiadavku
Voľba na úrovni požiadavky uľahčuje paralelnú prácu viac než zmena systémových vlastností JVM okolo každého sťahovania. Uchovávaj meniteľnú požiadavku oddelene pre každého pracovníka. Moderný jsoup dokáže zdieľať nastavenia a úložisko cookies relácie pri vytváraní novej požiadavky:
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();
Vyššie uvedené volania prebiehajú pre prehľadnosť postupne. Ak sa práca rozdeľuje súčasne, vytváraj požiadavky nezávisle namiesto zmeny proxy na jednom prebiehajúcom Connection. Zdieľaná relácia zdieľa aj cookies; použi rôzne relácie, keď majú identity prehliadania zostať oddelené.
Tieto rozhrania sú prítomné v jsoup 1.21.2. Rozhranie newRequest() bez argumentov pochádza z 1.14.1, takže staršia aplikácia by mala pred prevzatím príkladu s reláciou skontrolovať svoju závislosť.
Prihlasovacie údaje sú ďalšou požiadavkou pre overenú proxy. Úspešný výber trasy neposkytuje účet a prijatie výzvy proxy sa líši od zlyhania pripojenia k jej portu.