Obtén una pàgina a través d'un proxy HTTP a jsoup
Utilitza l'API de proxy HTTP a nivell de petició de jsoup i crea peticions separades quan diversos treballadors comparteixen la configuració de la sessió.
jsoup pot obtenir la pàgina a través d'un proxy HTTP i analitzar la resposta en la mateixa crida:
Document page = Jsoup.connect("https://www.example.com/")
.proxy("proxy.example", 8080)
.get();
El nom d'amfitrió i el port enter identifiquen el proxy. Per a les peticions permeses a pàgines públiques, selecciona un punt final HTTP del teu servei o de la llista de proxys HTTP. L'URL que es passa a connect continua sent la pàgina que vols. No cal descarregar l'HTML en una cadena amb un URLConnection separat només per afegir aquesta ruta.
proxy(String, int) selecciona un proxy HTTP per a aquesta petició. Un número de port com 1080 no canvia el seu protocol a SOCKS; el punt final del proxy ha de parlar el tipus que s'està configurant. jsoup també exposa una sobrecàrrega que accepta java.net.Proxy, però el suport per a una ruta concreta encara depèn de la implementació HTTP en ús.
Dóna a cada treballador la seva pròpia petició
Una opció a nivell de petició facilita el treball paral·lel més que canviar les propietats del sistema JVM al voltant de cada descàrrega. Mantén la petició mutable separada per a cada treballador. El jsoup modern pot compartir la configuració i el magatzem de galetes d'una sessió mentre crea una petició nova:
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();
Les crides anteriors s'executen seqüencialment per claredat. Si el treball es distribueix de manera concurrent, crea les peticions de manera independent en lloc de canviar el proxy en una Connection en curs. Una sessió compartida també comparteix galetes; utilitza sessions diferents quan les identitats de navegació han de romandre separades.
Aquestes interfícies són presents a jsoup 1.21.2. La interfície newRequest() sense arguments data de 1.14.1, així que una aplicació antiga hauria de comprovar la seva dependència abans d'adoptar l'exemple de sessió.
Les credencials són un requisit addicional per a un proxy autenticat. Una selecció de ruta correcta no proporciona un compte, i rebre un desafiament del proxy és diferent de no poder connectar amb el seu port.