Anpassen des Benutzeragenten für URLConnections in Java
Bei der Verwendung von URLConnection in Java zum Abrufen von Webinhalten ist häufig die Einrichtung eines benutzerdefinierten Benutzeragenten erforderlich genaues Website-Crawling und Benutzersimulation. Die Standard-Java-Laufzeitumgebung hängt jedoch ihre eigene Kennung an die Zeichenfolge des Benutzeragenten an, was in bestimmten Szenarien möglicherweise nicht wünschenswert ist.
Die Abfrage
Ein Java-Entwickler hat um Hilfe gebeten beim Festlegen eines Benutzeragenten ohne das von der Laufzeit angehängte Suffix „Java/1.5.0_19“. Der Benutzer hat einen Codeausschnitt bereitgestellt, der veranschaulicht, wie er versucht hat, den Benutzeragenten mit setRequestProperty() festzulegen.
Die Lösung
Glücklicherweise ist in Java 1.6.30 und höher Das Festlegen des Benutzeragenten über setRequestProperty("User-Agent", "") funktioniert einwandfrei, ohne dass zusätzliche Java-Laufzeitinformationen hinzugefügt werden. Um dies zu demonstrieren, nutzte der Entwickler Netcat, um auf eingehende HTTP-Anfragen zu warten und beobachtete, dass der benutzerdefinierte Benutzeragent erfolgreich ohne das Java-Suffix gesendet wurde.
Vollständige Implementierung
import java.io.IOException; import java.net.URL; import java.net.URLConnection; public class CustomUserAgent { 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()); } }
Durch die Nutzung dieses Ansatzes können Entwickler Benutzeragenten für ihre URLConnections in Java ohne unerwünschte Java-spezifische Ergänzungen effektiv festlegen und so das gewünschte Verhalten für ihr Web Scraping oder andere Kommunikationsaufgaben sicherstellen.
Das obige ist der detaillierte Inhalt vonWie lege ich einen benutzerdefinierten Benutzeragenten für URLConnections in Java ohne den Java Runtime Identifier fest?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!