18

我正在尝试抓取一个网站,更具体地说是一个具有 SAML 身份Google Site验证ManifoldCF并将抓取的数据索引到 Apache Solr 的网站。但是当我抓取 URL 时,它让我302重定向到登录页面,然后说RESPONSECODENOTINDEXABLE.

我不确定我的身份验证是否正确。在manifoldCF 中,我们有HTTP basic身份验证选项NTLM authenticationSession-based访问凭据身份验证方法。我使用Session based了更像是基于表单的身份验证而不是身份验证的SAML身份验证方法。

有没有人使用具有SAML身份验证的manifoldCF 爬取了一个网站?如果没有manifoldCF,有没有人能够通过 Apache Nutch 实现这一点,因为恐怕它也只提供HTTP基本的DigestNTLM身份验证。

任何见解都会有所帮助。如果这里有人认为可以轻松完成,可以提供有关该问题的更多信息。基本上,当我抓取https://sites.google.com/a/my-sub-domain.com时,它会重定向到 SSO 登录页面,并且抓取工具拒绝再抓取,并给出 302 错误。这是一个基于 Intranet 的网站。

4

3 回答 3

1

Nutch 不支持使用 SAML 进行 SSO 身份验证。您需要通过编写自定义插件来处理它。我们扩展了 proptocol selenium 插件来处理 SAML 流。

于 2018-07-06T17:30:18.163 回答
0

不确定这是否有帮助,请尝试一下。在 nutch 中,我们可以提供登录页面的凭据,我们在 conf 目录中有 httpclient-auth.xml 文件。在那里,您可以提供您的主机名以及凭据。

<auth-configuration>
   <credentials username="admin" password="admin123">
      <authscope host="hostname" realm="login"/>
      <default/>
   </credentials>
</auth-configuration>

同样,您可以向此配置添加任意数量的凭据。

要抓取 https 站点,请将 nutch-conf.xml 中的 plugin.includes 属性从 protocol-http 更改为 protocol-httpclient

于 2017-06-02T12:31:53.673 回答
0

我们修改了 Nutch 协议硒插件中的逻辑来处理 SSO 流。您需要等待重定向到 SSO 页面。然后使用 selenium 你可以处理 SSO。在 SSO 之后再次等待重定向到原始页面。

如果需要 2 因素身份验证,那么事情就会变得复杂。在这种情况下,您可以配置 google 身份验证器(如果您的 IdP 允许)。您可以使用它来获得 TOTP。

对于在身份验证后抓取文件,没有通常的方法。您可以将驱动程序配置为始终下载文件,然后使用 docwnlaoded 文件。

您可以使用另一个 http 客户端处理身份验证流程。如果您需要动态页面的内容(在所有 JS 和 Ajax 请求完成之后),那么 selenium 是最佳选择,如果您正在使用它,您可以将 auth 部分移至 selenium。

于 2019-01-21T18:11:20.513 回答