Подтвердить что ты не робот

Пользовательский агент Android HTTP

Как получить реальное устройство в http_user_agent? Когда я использую WebView, я могу получить реальное значение следующим образом:

[HTTP_USER_AGENT] => Mozilla/5.0(Linux; U; Android 2.2; en-gb; LG-P500 Build/FRF91) 
AppleWebKit/533.0 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1

Но когда я использую соединение Apache, результат отличается:

[HTTP_USER_AGENT] => Apache-HttpClient/UNAVAILABLE(java 1.4).

В чем проблема?

4b9b3361

Ответ 1

Если вы не хотите вызывать setHeader() для каждого создаваемого вами запроса, вы можете установить параметр http client CoreProtocolPNames.USER_AGENT. После этого HTTP-клиент автоматически добавит этот параметр заголовка к каждому запросу.

Что-то вроде:

client.getParams().setParameter(CoreProtocolPNames.USER_AGENT, "Custom user agent");

при создании HttpClient.

Ответ 2

Чтобы завершить принятый ответ, если вы хотите, чтобы пользовательский агент по умолчанию использовал System.getProperty( "http.agent" )

client.getParams().setParameter(CoreProtocolPNames.USER_AGENT,
                                System.getProperty("http.agent"));

Ответ 3

Если вы хотите установить свой собственный заголовок пользовательского агента, вы должны использовать метод setHeader.

В случае запроса HTTP-сообщения вы просто устанавливаете его так.

private String url = "http://myfancyurl.com/";
private String ua = "My Custom UA Header String";

private HttpPost post = new HttpPost(url);
post.setHeader("User-Agent", ua);

Это было просто краткое объяснение того, как установить пользовательскую строку пользовательского агента. Ваш код может выглядеть иначе. Важной частью является метод setHeader.

Ответ 4

Вы можете прочитать useragent с помощью webview:

new WebView(this).getSettings().getUserAgentString();

Или используя системное свойство:

System.getProperty("http.agent")

Источник: fooobar.com/info/659054/...