Einstellen des Benutzeragenten einer Java-URLConnection
Beim Versuch, eine Webseite mit Java mit URLConnection zu analysieren und den Benutzeragenten auf eine bestimmte festzulegen Wert kann ein zusätzliches „Java/1.5.0_19“ am Ende angehängt werden. Dies ist auf eine Einschränkung in älteren Java-Versionen zurückzuführen.
Lösung (Java 1.6.30 und neuer)
In Java 1.6.30 und neuer ist dieses Problem aufgetreten wurde gelöst. Das Festlegen des Benutzeragenten mit setRequestProperty("User-Agent", "Mozilla ...") funktioniert jetzt korrekt, ohne die Java-Version anzuhängen.
Überprüfung
Zur Überprüfung Dazu können Sie mit Netcat einen Port abhören, der die rohen HTTP-Header eingehender Anfragen anzeigt. Ohne den Benutzeragenten festzulegen, werden in den Headern Folgendes angezeigt:
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
Beim Festlegen des Benutzeragenten zeigen die Header stattdessen:
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
Beispielcode (Java 1.6.30)
Das folgende Codebeispiel zeigt, wie der Benutzeragent richtig eingestellt wird:
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()); } }
Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.
Copyright© 2022 湘ICP备2022001581号-3