Java プログラムから独自の TMF プレーヤー ページをロードして、意思決定ポイントを自動的に導き出したい。URLは「http://caps.fool.com/player/staka.aspx」です。Firefox は期待どおりにページを読み込みます (すべての Cookie が削除され、ログインしていません)。次に示すように、GET 要求をプロトコル化します。
Request-URL: http://caps.fool.com/player/staka.aspx
Request-Methode: GET
Status-Code: HTTP/1.1 200 OK
Request-Header 12:03:26.000
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:24.0) Gecko/20100101 Firefox/24.0
ホスト: caps.fool.com
DNT: 1
接続: キープアライブ
キャッシュ制御: 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,application/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(); ...
それにもかかわらず、次の内容を含む別のページが表示されます。
<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 の GET の違いを理解するのにおそらく役立つでしょう。さまざまなパラメーターなどをいろいろ試してみましたが、異なる結果につながるものはありませんでした。
Firefox によって作成されたものと見分けがつかない GET 要求をプログラムすることは可能ではないでしょうか? これを行う方法はありますか?