如何使用ManifoldCF或nutch抓取具有SAML身份验证的网站?

时间:2016-08-08 14:07:43

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

我正在尝试使用具有SAML身份验证的Google Site抓取网站,更具体地说是ManifoldCF,并将已抓取的数据编入Apache Solr。但是当我抓取网址时,它会让我302重定向到登录页面,然后说RESPONSECODENOTINDEXABLE

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

是否有人使用具有SAML身份验证的manifoldCF来抓取网站?如果不是manifoldCF,是否有人能够通过Apache Nutch完成此任务,因为我担心,它还仅提供HTTP基本,DigestNTLM身份验证。< / p>

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

3 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分: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

答案 2 :(得分:0)

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

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

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

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