我正在尝试使用具有SAML身份验证的Google Site
抓取网站,更具体地说是ManifoldCF
,并将已抓取的数据编入Apache Solr。但是当我抓取网址时,它会让我302
重定向到登录页面,然后说RESPONSECODENOTINDEXABLE
。
我不确定我是否正确认证。在manifoldCF中,我们有HTTP basic
身份验证,NTLM authentication
和Session-based
访问凭据身份验证方法的选项。我使用了Session based
身份验证方法,它更像是基于表单的身份验证,而不是SAML
身份验证。
是否有人使用具有SAML
身份验证的manifoldCF来抓取网站?如果不是manifoldCF
,是否有人能够通过Apache Nutch完成此任务,因为我担心,它还仅提供HTTP
基本,Digest
和NTLM
身份验证。< / p>
任何见解都会有所帮助。如果有人认为可以轻松完成,可以提供有关该问题的更多信息。基本上,当我抓取https://sites.google.com/a/my-sub-domain.com时,它会重定向到SSO登录页面,并且爬虫拒绝抓取任何更多,从而产生302错误。这是一个基于内联网的网站。
答案 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请求之后),那么硒是最佳选择,如果您正在使用它,则可以将身份验证部分移至硒。