headers - ¿Cómo falsifico un cliente de navegador específico cuando uso la biblioteca de red de Java?
request in java (3)
Un pequeño programa mío simplemente se rompió porque, al parecer, el sitio que estaba explorando programáticamente ahora supone que una solicitud Java proviene de un teléfono móvil, y el enlace que estaba buscando no está en su página móvil.
Así que quiero falsificar un acceso a Internet Explorer. ¿Cómo hago eso con java.net?
Debe configurar el encabezado User-Agent en la solicitud HTTP a un valor utilizado por Internet Explorer .
Recomiendo usar la biblioteca Jakarta HttpClient para realizar la solicitud, ya que proporciona una API de nivel superior para manipular la solicitud.
Suponiendo que está utilizando java.net.URLConnection, llame a setRequestProperty (String, String) para establecer el encabezado de la solicitud en un valor que IE usaría. Por ejemplo, para falsificar IE6:
URL url = new URL("http://google.com");
URLConnection connection = url.openConnection();
connection.setRequestProperty("User-Agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; .NET CLR 1.0.3705; .NET CLR 1.1.4322; .NET CLR 1.2.30703)");
y luego usa el objeto de conexión como antes.
Pero java.net es horrible. En su lugar, usa Apache Commons HttpClient, es mucho más agradable.
Mejor aún, utilice un marco diseñado para navegar por sitios web, como HtmlUnit
IIRC, configure la propiedad del sistema "http.agent"
través de System
, -D
en la línea de comandos, en su archivo JNLP o en otro lugar.