1

我正在尝试向我的 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

并且没有下载或抓取任何文件。因此,尽管我取得了进步,但它并没有把我带到任何地方。没有太多的日志信息可以关闭。

4

1 回答 1

0

我还在 Heritrix 表单上问了这个问题:http: //tech.groups.yahoo.com/group/archive-crawler/message/8235和 Noah Levitt 的想法是将登录页面作为种子添加到我的爬网中。现在一切似乎都没有太大问题。我的结论是我在配置文件中正确设置了所有内容,但缺少我需要的实际页面种子。

于 2013-07-23T16:31:51.830 回答