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

Dan*_*ral 2 java http http-headers

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

所以我想伪造Internet Explorer访问权限.我如何用java.net做到这一点?

ska*_*man 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)");
Run Code Online (Sandbox Code Playgroud)

然后像以前一样使用连接对象.

但java.net太可怕了.使用Apache Commons HttpClient,它更好.

更好的是,使用专为浏览网站而设计的框架,例如HtmlUnit