setRequestProperty (user-agent) не активен, пока не пройдет некоторое время - PullRequest
0 голосов
/ 31 марта 2011

Я пишу HTTP-клиент, который должен проанализировать ответ от веб-сервера, и я столкнулся с (другой) проблемой.

Я обнаружил, что на одной странице меня перенаправили на портал мобильного контента: Пример: www.example.com/m/public. Это не то, что я хочу.

При использовании «обычного» браузера переадресация не выполнялась.

Просмотрев сделанный мной снимок, я обнаружил, что это может быть связано с тем, что мой пользовательский агент интерпретируется как браузер мобильного телефона (пользовательский агент был "Java / 1.6.0_22").

Итак, я изменил пользовательский агент, используя это:

URL url = new URL(endpoint);
URLConnection conn = url.openConnection();
conn.setRequestProperty ( "User-agent", "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; Trident/4.0; SLCC1; .NET CLR 2.0.50727; .NET CLR 1.1.4322; .NET CLR 3.5.30729; InfoPath.1; .NET CLR 3.0.30618)");

К моему удивлению, он все еще не работал, и я обнаружил, что все еще отправляю пользовательский агент "Java / 1.6.0_22".

Затем я посмотрел немного поближе на свой захват и увидел, что после пары запросов GET (после первого GET я отправляю GET источникам на главной странице) пользовательский агент волшебным образом изменился с Java на «Mozilla» ... ".

Кажется, мой setRequestProperty не становится активным, пока через некоторое время ...

Кто-нибудь видел это? Есть ли способ обойти это?

Спасибо!

Ответы [ 2 ]

1 голос
/ 31 марта 2011

Этот SO-ответ предлагает установить системное свойство до этого .

0 голосов
/ 06 апреля 2013

У меня была такая же проблема. Я написал веб-сканер, и веб-страницы были захвачены как мобильные версии. Теперь я использовал оба

System.setProperty("http.agent", "");
urlconn.setRequestProperty("User-Agent", "IE/9.0");

и это сработало.

...