Desconcertado por CookieHandler

Necesito acceder a algunas páginas web y pasar las cookies como lo hacen los navegadores. Esto se hace fácilmente usando

CookieHandler.setDefault(new MyCookieManager()); 

pero esto introduce el estado global que necesito evitar (Imagine acceder a dos cuentas en el mismo servidor al mismo tiempo). Entonces, lo que me gustaría hacer es algo como

 String doGetWithCookies(URL url, MyCookies myCookies) { HttpsURLConnection conn = (HttpsURLConnection) url.openConnection(); myCookies.addToRequest(...); myCookies.updateFromResponse(...); return getHttpBody(conn); } 

Pero no veo cómo hacerlo. Los métodos CookieManager.get y put no aceptan una URL , pero quiero usar

  • las mismas cookies con diferentes URL s
  • Diferentes cookies para la misma URL para diferentes cuentas.

Lo que he intentado: nada, ya que solo hay cuatro métodos disponibles y una única subclase y nada encaja. Sin duda, es factible analizar los encabezados de forma manual, pero en mi humilde opinión no es una opción en 2014. Conozco el Cliente HTTP de Apache , pero 1. Espero que algo trivial no necesite una biblioteca de medio megabyte. una solución allí tampoco.

Aclaración:

Imagina que quieres bloquear a SO como dos usuarios diferentes. Puede hacerlo utilizando dos computadoras o dos navegadores diferentes (Chrome y Firefox) en una sola computadora. No puedes hacerlo en dos tabs de un solo navegador.

Lo que quiero es equivalente a la posibilidad de simular dos navegadores. Mientras tanto, he encontrado una pregunta relacionada y he publicado una solución pirata .

Todavía estoy buscando una explicación detrás del diseño de CookieHandler .