我試圖通過更改我的連接中的用戶代理屬性來「欺騙」Google財經,以爲我是一個Web瀏覽器。但是,當我使用真正的Web瀏覽器時,我收到的迴應仍然不是我應該得到的。我想知道爲什麼會這樣,爲了使它工作我需要做些什麼?下面是相關的代碼(以下簡稱「網站」是https://www.google.co.uk/finance/converter?a=1&from=GBP&to=USD):URLConnection中的Android用戶代理
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();
}
編輯:我要指出,這是一個Android應用程序,而不是Java的。它也不會顯示給WebView中的用戶或任何東西,這發生在後臺。
什麼* *做你回來?另外,我不確定你爲什麼要加載動態表格 –
它與你期望的有什麼不同?我的第一個猜測是,你期望的那部分DOM實際上是由JavaScript在運行時構建的,而不是HTML的一部分,這可能解釋了這種差異。 –
我不能在這裏發佈完整的HTML,它會太冗長。但這與DOM或JavaScript無關。我的問題是我從瀏覽器中得到的結果,程序查詢是非常不同的;這隻能是因爲谷歌知道我沒有使用「真實」的網絡瀏覽器。事實上,我知道這一點,因爲我之前就已經完成了它,但它一直在運行,但Google最近必須更改其網站以檢測自動查詢。 –