Как подделать конкретный клиент браузера при использовании сетевой библиотеки Java? - PullRequest
2 голосов
/ 17 июля 2009

Моя маленькая программа просто сломалась, потому что, кажется, сайт, который я просматривал программно, теперь предполагает, что запрос Java поступил с мобильного телефона, а ссылка, которую я искал, отсутствует на их мобильной странице.

Итак, я хочу подделать доступ к Internet Explorer. Как мне это сделать с помощью java.net?

Ответы [ 3 ]

11 голосов
/ 17 июля 2009

Предполагая, что вы используете java.net.URLConnection, затем вызовите setRequestProperty (String, String), чтобы установить в заголовке запроса значение, которое будет использовать IE. Например, чтобы подделать 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)");

, а затем используйте объект подключения, как и раньше.

Но java.net ужасен. Вместо этого используйте Apache Commons HttpClient, это намного приятнее.

Еще лучше, используйте платформу, предназначенную для навигации по веб-сайтам, например HtmlUnit

2 голосов
/ 17 июля 2009

IIRC, установите "http.agent" системное свойство через System, -D в командной строке, в файле JNLP или в другом месте.

2 голосов
/ 17 июля 2009

Вам необходимо установить заголовок User-Agent в HTTP-запросе на значение , используемое Internet Explorer .

Я рекомендую использовать библиотеку Jakarta HttpClient для выполнения запроса, поскольку он предоставляет API более высокого уровня для манипулирования запросом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...