我正在尝试向我的 Heritrix 配置添加身份验证。我的 .cxml 文件具有以下内容:
<bean id="preconditions" class="org.archive.crawler.prefetch.PreconditionEnforcer">
<property name="credentialStore">
<ref bean="credentialStore" />
</property>
</bean>
<bean id="fetchHttp" class="org.archive.modules.fetcher.FetchHTTP">
<property name="credentialStore">
<ref bean="credentialStore" />
</property>
<property name="shouldProcessRule">
<bean class="org.archive.modules.deciderules.DecideRuleSequence">
<property name="rules">
<list>
<bean class="org.archive.modules.deciderules.recrawl.IdenticalDigestDecideRule">
<property name="decision" value="REJECT" />
</bean>
<bean class="org.archive.modules.deciderules.ResourceNoLongerThanDecideRule">
<property name="contentLengthThreshold" value="54" />
<property name="useHeaderLength" value="true" />
<property name="decision" value="REJECT" />
</bean>
</list>
</property>
</bean>
</property>
</bean>
<bean id="exampleCredential" class="org.archive.modules.credential.HtmlFormCredential">
<property name="domain" value="example.com" />
<property name="loginUri" value="https://example.com/user?destination=%2f" />
<property name="formItems">
<map>
<!-- username/password -->
<entry key="name" value="something@something.com"/>
<entry key="pass" value="genericpassword"/>
<!-- hidden inputs -->
<entry key="form_build_id" value="form-asdf" />
<entry key="form_id" value="user_login" />
<!-- submit -->
<entry key="op" value="submit"/>
</map>
</property>
</bean>
<bean id="credentialStore" class="org.archive.modules.credential.CredentialStore">
<property name="credentials">
<map>
<entry key="exampleCredential" value-ref="exampleCredential" />
</map>
</property>
</bean>
我还将 FetchHTTP 和 PreconditionEnforcer 的日志记录设置为 FINE,但似乎没有发生任何事情。任何一个模块都没有出现日志记录输出,并且被拉下的页面显然是未经身份验证的视图的页面。我发现关于如何使用 CredentialStore 有点不清楚,考虑到我已经花了很多时间阅读规范,这些规范充其量在身份验证和网站方面是不完整的。任何人都知道如何在 Heritrix 中设置身份验证,请帮助。
更新: 日志不起作用,因为 eclipse 不知道我的 HERITRIX_HOME 变量,所以它甚至从未读取日志配置文件。我将 bean exampleCredential 的域属性从:
<property name="domain" value="example.com" />
到:
<property name="domain" value="www.example.com" />
现在登录页面已入队,但现在记录器为所有排队的文件吐出以下内容:
org.archive.crawler.prefetch.PreconditionEnforcer.innerProcessResult() PolitenessEnforcer doesn't understand uri's of type dns (ignoring)
org.archive.modules.deciderules.ResourceNoLongerThanDecideRule.evaluate() Error: Missing HttpMethod object in CrawlURI. dns:secure.www.example.com
并且没有下载或抓取任何文件。因此,尽管我取得了进步,但它并没有把我带到任何地方。没有太多的日志信息可以关闭。