Я пытаюсь «обмануть» Google Finance, думая, что я веб-браузер, изменив свойство агента пользователя в своем соединении. Тем не менее, ответ, который я получаю обратно, не то, что я должен получить, когда я использую фактический веб-браузер. Мне было интересно, почему это так, и что мне нужно сделать, чтобы он работал? Вот соответствующий код («Сайт» является https://www.google.co.uk/finance/converter?a=1&from=GBP&to=USD):Пользовательский агент Android в URLConnection
protected static String readURL(String site) {
StringBuilder buff = new StringBuilder();
try {
HttpURLConnection conn = (HttpURLConnection) new URL(site).openConnection();
conn.setRequestProperty("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.79 Safari/537.36 Edge/14.14393");
conn.connect();
BufferedReader bfr = new BufferedReader(new InputStreamReader(conn.getInputStream()));
String inputLine;
while ((inputLine = bfr.readLine()) != null)
buff.append(inputLine).append('\n');
bfr.close();
}
catch (Exception ioe) {
System.err.println("Failed to read from \""+site+"\": "+ioe.getMessage());
}
return buff.toString();
}
EDIT: Я хотел бы отметить, что это в Android приложения, а не Java один. Он также не отображается пользователю в WebView или что-то еще, это происходит в фоновом режиме.
Что * сделать * вы получите обратно? Кроме того, я не уверен, почему вы пытаетесь загрузить динамическую форму. –
В чем он отличается от того, что вы ожидаете? Мое первое предположение заключалось в том, что часть DOM, которую вы ожидаете, фактически построена JavaScript во время выполнения, а не в части HTML, и это может объяснить несоответствие. –
Я не могу опубликовать полный HTML здесь, это было бы слишком много. Но это не связано с DOM или JavaScript. Моя проблема в том, что я возвращаюсь из браузера, и программные запросы сильно различаются; и это может быть только потому, что Google знает, что я не использую «настоящий» веб-браузер. Infact Я знаю это, потому что я делал это раньше, и это сработало, но Google, должно быть, недавно изменил свой сайт, чтобы обнаружить автоматические запросы. –