setRequestProperty(user-agent)在“一段时间”之后才激活

时间:2011-03-31 19:35:48

标签: java user-agent

我正在编写一个HTTP客户端,它需要解析来自网络服务器的响应,而且我遇到了(另一个)问题。

我发现在一个页面中我被重定向到他们的移动内容门户网站: 例如:www.example.com/m/public。这不是我想要的。

使用“普通”浏览器时,不会发生此重定向。

在查看我制作的捕获后,我发现这可能是因为我的用户代理被解释为手机浏览器(用户代理是“Java / 1.6.0_22”)。

所以我改变了用户代理,使用:

URL url = new URL(endpoint);
URLConnection conn = url.openConnection();
conn.setRequestProperty ( "User-agent", "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; Trident/4.0; SLCC1; .NET CLR 2.0.50727; .NET CLR 1.1.4322; .NET CLR 3.5.30729; InfoPath.1; .NET CLR 3.0.30618)");

令我觉得它仍然没有用,我发现我还在发送用户代理“Java / 1.6.0_22”。

然后我看了一下我的捕获,我发现在几次GET请求之后(在第一次GET之后我将GET发送到主页面上的源代码),用户代理神奇地从java改为“Mozilla” ......“。

看来我的setRequestProperty在一段时间后才会生效......

有没有人见过这个?有办法解决它吗?

谢谢!

2 个答案:

答案 0 :(得分:1)

This SO answer建议先设置系统属性

答案 1 :(得分:0)

我遇到了同样的问题。我写了一个网络爬虫,抓住的网页是移动版本。现在我用了两个

System.setProperty("http.agent", "");
urlconn.setRequestProperty("User-Agent", "IE/9.0");

并且有效。