我想从 Java 程序加载我自己的 TMF 播放器页面以自动导出决策点。URL 是“ http://caps.fool.com/player/staka.aspx ”。Firefox 按预期加载页面(所有 Cookie 已删除,未登录)。它对 GET 请求进行协议,如下所示:
请求 URL: http
://caps.fool.com/player/staka.aspx 请求方法:GET
状态代码:HTTP/1.1 200 OK
请求标头 12:03:26.000
用户代理:Mozilla/5.0(Windows NT 6.1; WOW64; rv:24.0) Gecko/20100101 Firefox/24.0
主机: caps.fool.com
DNT: 1
连接: keep-alive
缓存控制: max-age=0
接受语言: 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 的区别。我对各种参数和其他参数进行了很多实验,但没有任何结果会导致不同的结果。
难道不能编写一个与 Firefox 创建的请求没有区别的 GET 请求吗?知道如何做到这一点吗?