使用Java的Net库时如何伪造特定的浏览器客户端?

时间:2009-07-17 15:39:03

标签: java http http-headers

我的一个小程序刚刚爆发,因为看起来,我以编程方式浏览的网站现在假定Java请求来自手机,我正在寻找的链接不在他们的移动页面上。

所以我想假冒Internet Explorer访问。我如何用java.net做到这一点?

3 个答案:

答案 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系统属性。