Configuración del agente de usuario de una conexión URL de Java
Al intentar analizar una página web utilizando Java con una conexión URL y configurar el agente de usuario en una conexión especificada valor, se puede agregar un "Java/1.5.0_19" adicional al final. Esto surge debido a una limitación en versiones anteriores de Java.
Solución (Java 1.6.30 y posteriores)
En Java 1.6.30 y posteriores, este problema ha sido resuelto. Configurar el agente de usuario usando setRequestProperty("User-Agent", "Mozilla ...") ahora funciona correctamente sin agregar la versión de Java.
Verificación
Para verificar Para esto, puede escuchar en un puerto usando netcat, que muestra los encabezados HTTP sin formato de las solicitudes entrantes. Sin configurar el agente de usuario, los encabezados mostrarán:
GET /foobar HTTP/1.1 User-Agent: Java/1.6.0_30 Host: localhost:8080 Accept: text/html, image/gif, image/jpeg, *; q=.2, */*; q=.2 Connection: keep-alive
Al configurar el agente de usuario, los encabezados mostrarán:
GET /foobar HTTP/1.1 User-Agent: Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.4; en-US; rv:1.9.2.2) Gecko/20100316 Firefox/3.6.2 Host: localhost:8080 Accept: text/html, image/gif, image/jpeg, *; q=.2, */*; q=.2 Connection: keep-alive
Código de ejemplo (Java 1.6.30)
El siguiente ejemplo de código demuestra cómo configurar correctamente el agente de usuario:
import java.io.IOException; import java.net.URL; import java.net.URLConnection; public class TestUrlOpener { public static void main(String[] args) throws IOException { URL url = new URL("http://localhost:8080/foobar"); URLConnection hc = url.openConnection(); hc.setRequestProperty("User-Agent", "Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.4; en-US; rv:1.9.2.2) Gecko/20100316 Firefox/3.6.2"); System.out.println(hc.getContentType()); } }
Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.
Copyright© 2022 湘ICP备2022001581号-3