使用JSoup抓取URL数据时了解用户代理

时间:2018-04-26 09:34:36

标签: jsoup user-agent

我的基本目标是创建类似于Web链接的典型web-unfurl项目。为此,我正在使用JSoup。

对于User-Agent,我最初使用字符串 -

Mozilla/5.0 (Macintosh; U; Intel Mac OS X; de-de) AppleWebKit/523.10.3 (KHTML, like Gecko) Version/3.0.4 Safari/523.10

用于以下方法调用 -

public void connect(String URL) throws IOException {
    Document document = Jsoup
        .connect(URL)
        .userAgent(USER_AGENT)
        .referrer(REFERRER)
        .timeout(12000)
        .followRedirects(true)
        .get();
  }

但是,我可以看到该网址没有正确显示'使用上述用户代理时被刮掉,而不是像Mozilla/5.0那样。例如,当我使用前者时,我没有在URL的type=application/json+oembed中使用head元标记接收oEmbed数据,但是在我使用后者时工作。我猜这可能与使用前用户代理发送的URL的.js潦草有关,而后者则是普通的HTML,但我还没有详细了解它。

我知道Mozilla/5.0应该与Mozilla兼容,但Mozilla/5.0 (Macintosh; U; Intel Mac OS X; de-de) AppleWebKit/523.10.3 (KHTML, like Gecko) Version/3.0.4 Safari/523.10究竟是什么意思?

有人可以澄清我的问题,或者指出一些有用的用户代理文档吗?

1 个答案:

答案 0 :(得分:0)

大多数Web浏览器使用User-Agent字符串值,如下所示:

var x = [f1, f2, f3].reduceRight((x, f) => f(x), f4(f5(a, b), 1, 2, true));
//                                               ^^^^^^^^^^^^^^^^^^^^^^^^   start value
//      ^^^^^^^^^^^^                                                        functions

例如,iPad上的Safari使用了以下内容:

Mozilla/[version] ([system and browser information]) [platform] ([platform details]) [extensions]. 

此字符串的组成部分如下:

Mozilla / 5.0:以前用于表示与Mozilla渲染引擎的兼容性。

(iPad; U; CPU OS 3_2_1,如Mac OS X; en-us):运行浏览器的系统的详细信息。 AppleWebKit / 531.21.10:浏览器使用的平台。

(KHTML,与Gecko一样):浏览器平台详细信息。

Mobile / 7B405:浏览器使用此功能指示可直接在浏览器中或通过第三方提供的特定增强功能。例如,Microsoft Live Meeting注册了一个扩展,以便Live Meeting服务知道该软件是否已经安装,这意味着它可以为加入会议提供简化的体验。

您可以从wikipedia了解有关User-Agent的更多信息。如果您需要更具体的信息,还可以链接到文档。