【问题标题】:How to crawl a website that has SAML authentication using ManifoldCF or nutch?如何使用 ManifoldCF 或 nutch 抓取具有 SAML 身份验证的网站?
【发布时间】:2016-12-14 08:36:54
【问题描述】:

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

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

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

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

【问题讨论】:

    标签: solr saml nutch full-text-indexing manifoldcf


    【解决方案1】:

    不确定这是否有帮助,请尝试一下。 在 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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        【解决方案3】:

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

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

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

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2017-01-02
          • 1970-01-01
          • 1970-01-01
          • 2016-09-13
          • 1970-01-01
          • 2015-12-31
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多