我想從Java程序加載我自己的TMF播放器頁面,以自動推導出決策點。網址是「http://caps.fool.com/player/staka.aspx」。按照預期,Firefox加載頁面(所有Cookies被刪除,未登錄)。它協議的GET請求如下所示:爲什麼Java編碼的HTTP GET提供的網頁不同於看似完全相同的Firefox GET請求?
的Request-URL:http://caps.fool.com/player/staka.aspx
的Request-了Methode:GET
狀態碼:HTTP/1.1 200 OK
請求標題12:03:26.000
用戶代理:Mozilla的/ 5.0(Windows NT的6.1; WOW64; RV:24.0)的Gecko/20100101火狐/ 24.0
主持人:caps.fool.com
DNT:1個
連接:保持活躍
的Cache-Control :max-age = 0
Accept-Language:de-de,de; q = 0.8,en-us; q = 0.5,en; q = 0.3
Accept-Encoding:gzip,deflate
Accept:text/html,application/xhtml + XML,應用/ XML; q = 0.9,/; q = 0.8
我嘗試實現代碼儘可能接近:
URL url = new URL("http://caps.fool.com/player/staka.aspx"); HttpURLConnection connection = (HttpURLConnection)url.openConnection(); connection.setRequestMethod("GET"); connection.setRequestProperty( "User-Agent", "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:24.0) Gecko/20100101 Firefox/24.0"); connection.setRequestProperty("Host", url.getHost()); connection.setRequestProperty("DNT", "1"); connection.setRequestProperty("Connection", "keep-alive"); connection.setRequestProperty("Cache-Control", "max-age=0"); connection.setRequestProperty("Accept-Language", "de-de,de;q=0.8,en-us;q=0.5,en;q=0.3"); connection.setRequestProperty("Accept-Encoding", "gzip, deflate"); connection.setRequestProperty( "Accept", "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8"); inputStream = connection.getInputStream(); ...
不過,我得到一個不同的頁面含有t他以下幾點:
<html> <head> <META NAME="robots" CONTENT="noindex,nofollow"> <script> (function() { var z="";var b="747279 ... 7D3B";for (var i=0;i<b.length;i+=2){z=z+parseInt(b.substring(i, i+2), 16)+",";}z = z.substring(0,z.length-1); eval(eval('String.fromCharCode('+z+')'));})(); </script></head> <body> <iframe style="display:none;visibility:hidden;" src="http://my.incapsula.com/public/ga/jsTest.html" id="gaIframe"></iframe> </body></html>
我已經縮短數字的相當長的字符串 「...」。在這個返回的頁面中,他們顯示了一個沒有包含在我打算訪問的原始頁面中的機器人提示。我看到他們使用來自「incapsula.com」的技術,這可能會幫助他們看到我的GET和Firefox的不同之處。我用各種參數和其他參數進行了很多實驗,但沒有發現任何結果。
難道不可能編寫一個與Firefox創建的GET請求不可區分的GET請求嗎?任何想法如何做到這一點?
嘗試硒。當您發送獲取請求時,您的瀏覽器會下載js和圖像。如果你不要求他們,這可能意味着你是一個機器人。也有人檢查鼠標移動。 –
瀏覽器只有下載js和圖片時才能下載頁面! Java請求不會傳遞頁面。 –
實際上你是對的,試着刪除'DNT,Cache-Control' [這裏是](http://pastebin.com/G6ctgjXe)我的瀏覽器發送的內容 –