jsoup pode obter a páxina a través dun proxy HTTP e analizar a resposta na mesma chamada:

Document page = Jsoup.connect("https://www.example.com/")
    .proxy("proxy.example", 8080)
    .get();

O nome de host e o porto enteiro identifican o proxy. Para as solicitudes permitidas a páxinas públicas, selecciona un punto final HTTP do teu servizo ou da lista de proxies HTTP. O URL que se pasa a connect segue a ser a páxina que queres. Non necesitas descargar o HTML nunha cadea cun URLConnection separado só para engadir esta ruta.

proxy(String, int) selecciona un proxy HTTP para esa solicitude. Un número de porto como 1080 non cambia o seu protocolo a SOCKS; o punto final do proxy debe falar o tipo que se está a configurar. jsoup tamén expón unha sobrecarga que acepta java.net.Proxy, pero o soporte para unha ruta concreta aínda depende da implementación HTTP en uso.

Dálle a cada traballador a súa propia solicitude

Unha opción a nivel de solicitude facilita o traballo en paralelo máis que cambiar as propiedades do sistema JVM arredor de cada descarga. Mantén a solicitude mutable separada para cada traballador. O jsoup moderno pode compartir a configuración e o almacén de cookies dunha sesión mentres crea unha solicitude 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();

As chamadas anteriores execútanse secuencialmente por claridade. Se o traballo se distribúe de forma concorrente, crea as solicitudes de forma independente en lugar de cambiar o proxy nunha Connection en curso. Unha sesión compartida tamén comparte cookies; usa sesións diferentes cando as identidades de navegación deban permanecer separadas.

Estas interfaces están presentes en jsoup 1.21.2. A interface newRequest() sen argumentos data de 1.14.1, así que unha aplicación antiga debería comprobar a súa dependencia antes de adoptar o exemplo de sesión.

As credenciais son un requisito adicional para un proxy autenticado. Unha selección de ruta correcta non proporciona unha conta, e recibir un desafío do proxy é distinto de non poder conectar co seu porto.

Artigos relacionados