java - setRequestProperty(用户代理)在 "a while"之后才激活

标签 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 直到一段时间后才变得活跃......

有人看过这个吗?有什么办法可以绕过它吗?

谢谢!

最佳答案

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

关于java - setRequestProperty(用户代理)在 "a while"之后才激活,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5505300/

相关文章:

http - 使用自己的程序抓取网站时应该使用什么用户代理

java - 在局部变量上同步是否合理?

Java正则表达式,替换sql查询中的关键字

java - 将动态生成的表格导出到 Excel

http-headers - 来自 User-Agent HTTP header 的操作系统

javascript - 检测用户代理 Firefox

java - Joda DateTime 不支持 Google App Engine 中的属性类型

java - 如何创建可以使用注释 Autowiring 的 spring bean?

PHP 用户代理确定手机和平板电脑

wicket - 在 Wicket 中检查用户代理