我的一个小程序刚刚爆发,因为看起来,我以编程方式浏览的网站现在假定Java请求来自手机,我正在寻找的链接不在他们的移动页面上。
所以我想假冒Internet Explorer访问。我如何用java.net做到这一点?
答案 0 :(得分:11)
假设您正在使用java.net.URLConnection,则调用setRequestProperty(String,String)将请求标头设置为IE将使用的值。例如,假冒IE6:
URL url = new URL("http://google.com");
URLConnection connection = url.openConnection();
connection.setRequestProperty("User-Agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; .NET CLR 1.0.3705; .NET CLR 1.1.4322; .NET CLR 1.2.30703)");
然后像以前一样使用连接对象。
但java.net很糟糕。使用Apache Commons HttpClient,它更好。
更好的是,使用专为浏览网站而设计的框架,例如HtmlUnit
答案 1 :(得分:2)
您需要将HTTP请求中的User-Agent标头设置为value used by Internet Explorer。
我建议使用Jakarta HttpClient library发出请求,因为它为manipulating请求提供了更高级别的API。
答案 2 :(得分:2)
IIRC,在命令行,JNLP文件或其他地方通过"http.agent"
,System
设置-D
系统属性。