Почему я не могу установить Java http User-Agent? - PullRequest
0 голосов
/ 07 августа 2011

Я попытался установить User Agent для http-запроса следующим образом:

public BufferedReader readURL(String url){
        URL urlcon;
        BufferedReader in = null;
        try {
            urlcon = new URL(url);
            connection = (HttpURLConnection)urlcon.openConnection();

            System.setProperty("http.agent", "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0)");
            connection.setRequestProperty("User-Agent", "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0)");
            System.out.println(connection.getHeaderField("User-Agent"));
            connection.connect();
            in = new BufferedReader(
                                    new InputStreamReader(
                                        connection.getInputStream()));

            String header = connection.getHeaderField(0);
            System.out.println(header);
            System.out.println("---Start of headers---");
            int i = 1;
            while ((header = connection.getHeaderField(i)) != null) {
                String key = connection.getHeaderFieldKey(i);
                System.out.println(((key==null) ? "" : key + ": ") + header);
                i++;
            }
            System.out.println(connection.getHeaderField("http.agent"));
            System.out.println("---End of headers---");
        } catch (MalformedURLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

        return in;
    }

И я получил User-Agent null:

nullHTTP / 1.0 200 OK--- начало заголовков ---Сервер: ApacheCache-Control: max-age = 10Истекает: вс, 7 августа 2011 года 16:09:26 по ГринвичуВарьируется: Accept-EncodingТип контента: текст / HTMLДлина контента: 163582Дата: вс, 07 авг 2011 16:09:20 GMTX-Varnish: 889692780 889684459Возраст: 4Подключение: keep-aliveX-Bip: 889692780 70 148Через: 1.1 CachOSноль--- Конец заголовков ---

Почему я не могу установить User-Agent?

Ответы [ 3 ]

3 голосов
/ 07 августа 2011

Используйте setHeader (), а не setRequestProperty.

1 голос
/ 15 января 2017

Установка системного свойства: «http.agent» изменит заголовок вашего соединения: «User-Agent», но обратите внимание, что согласно документации ваша версия Java все еще записана в нем:

Разные свойства HTTP

http.agent (по умолчанию: «Java /») Определяет строку, отправляемую в заголовке запроса User-Agent в запросах http.

Обратите внимание, что строка «Java /» будет добавлена ​​к той, которая указана в свойстве (например, если используется -Dhttp.agent = «foobar», заголовок User-Agent будет содержать «foobar Java / 1.5»..0 », если версия виртуальной машины 1.5.0).Это свойство проверяется только один раз при запуске.

Обратите внимание, что свойство проверяется только один раз при запуске, поэтому вы можете сначала задать свойство, а затем создать свой первый URL-адрес и подключиться.

Чтобы убедиться, что соответствующий заголовок отправлен, вы можете использовать « tcpdump ».Использование:

tcpdump -n dst host stackoverflow.com -vvvv
0 голосов
/ 07 августа 2011

Сервер возвращает информацию заголовка.Я предполагаю, что «User-Agent» не настолько важен, чтобы его можно было вернуть.Тот факт, что он не возвращен, не означает, что он не отправлен.

У меня есть небольшой инструмент (ieHTTPHeader), который отображает информацию заголовка.Когда я делаю обновление на этой странице, это первый набор заголовков, которые отправляются и возвращаются:

GET / questions / 6973981 / why-cant-i-set-java-http-user-agent HTTP /1.1
Accept: /
Referer: https://stackoverflow.com/questions/tagged/java?page=2&sort=newest&pagesize=15
Accept-Language: en-ca
User-Agent: Mozilla / 4.0 (совместимый; MSIE 8.0; Windows NT 5.1; Trident / 4.0)
Accept-Encoding: gzip, deflate
Хост: stackoverflow.com
Соединение: Keep-Alive
Cookie: __utmc = 140029553;__utma = 140029553.1370458634.1310761265.1312727448.1312739618.123;__utmz = 140029553.1312739618.123.123.utmcsr = Google | utmccn = (органический) | utmcmd = органическая | utmctr = Yahoo% 20finance% 20api% 20java;__qca = P0-1025379872-1310761265343;м = 4;USR = т = cEyCYO7bXECF & s = X6DJTj5kuY8H;__utmb = 140029553.15.10.1312739618

HTTP / 1.1 200 OK
Контроль кэша: общедоступный, max-age = 60
Тип содержимого: текст / html;charset = utf-8
Кодировка содержимого: gzip
Срок действия истекает: Sun, 07 авг. 2011 18:25:43 GMT
Дата последнего изменения: Sun, 07 авг. 2011 18:24:43 GMT
Варьируется: *
Дата: вс, 7 августа 2011 18:24:42 GMT
Длина контента: 12040

...