真实世界的用户代理——它们是什么?如何设置它们?- 爪哇

Saa*_*ieh 3 java url

我正在使用这一行在我的 Java 程序中打开一个流,但我认为我被真实世界的用户代理阻止了。

private InputStream is = new URL(a).openStream();  
Run Code Online (Sandbox Code Playgroud)

其中 a 是包含 url 的字符串。

我可以设置用户代理的最简单方法是什么?我只是刚刚了解他们,所以任何进一步的信息将不胜感激。例如:我想将其设置为 Mozilla/5.0。我是否需要添加更多信息?如果是这样,应该包括什么以及如何包括在内?另外,这是严格允许的,因为我应该担心有关设置用户代理的任何法律问题吗?抱歉,如果这个问题没有意义,那只是因为我对用户代理(基本上是程序发送它们)知之甚少,而且我不确定您是否必须注册或其他什么 - 我已经看到 Mac 上的 Safari 添加了: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_2) AppleWebKit/536.26.17 (KHTML, like Gecko) Version/6.0.2 Safari/536.26.17

谢谢

Ps 我已经阅读了一个类似的问题,但我从答案中不太明白 - 我是一个 Java 初学者,才刚刚开始尝试打开文件和 url 的流。

Tom*_*icz 5

我可以设置用户代理的最简单方法是什么?

URLConnection urlConnection = new URL(a).openConnection();
urlConnection.addRequestProperty("User-Agent", "Mozilla/5.0");
InputStream is = urlConnection.getInputStream();
Run Code Online (Sandbox Code Playgroud)

我想将其设置为 Mozilla/5.0。我是否需要添加更多信息?

您可以将其设置为任何您想要的。识别您的应用程序实际上是一个好主意,否则所有 Java 程序只会发送:

User-Agent: Java/1.7.0_11
Run Code Online (Sandbox Code Playgroud)

另外,这是严格允许的,因为我应该担心有关设置用户代理的任何法律问题吗?

不,您可以随意使用任何用户代理。此外,伪造用户代理并不违法。但是,如果网站基于 做出任何决定(尤其是关于安全性的)User-Agent,那就太糟糕了,因为它几乎是非法的 ; -)(请参阅:Java - 未从 URL 获取 html 代码)。