heritrix登陸項目

寫了一個最簡單的servlet登陸:
<bean id="credentialStore"  class="org.archive.modules.credential.CredentialStore">
	<property name="credentials">
	   <map>
		   <entry key="example-credential" value-ref="credential"/>
	   </map>
	</property>
 </bean>
 <bean id="credential"   class="org.archive.modules.credential.HtmlFormCredential">
 
    <property name="domain" value="127.0.0.1:8080" />
 
    <property name="loginUri" value="http://127.0.0.1:8080/TestLogin/loginServlet"/>
 
    <property name="formItems">
        <map>
            <entry key="userName" value="aa"/>
            <entry key="password" value="bb"/>
            <entry key="submit" value="submit"/>
        </map>
    </property>
 </bean>
loginUri的地址是表單要提交的地址,formItems中的key是提交控件的name,具體看
<a target=_blank href="https://webarchive.jira.com/wiki/display/Heritrix/HTML+Form+GET+or+POST">https://webarchive.jira.com/wiki/display/Heritrix/HTML+Form+GET+or+POST</a>

下面是另一種方法登陸:

<bean id="credential"
   class="org.archive.modules.credential.HttpAuthenticationCredential">
    <property name="domain">
        <value>127.0.0.1:8080</value>
    </property>
    <property name="realm">
        <value>.</value>
    </property>
    <property name="login">
        <value>aa</value>
    </property>
    <property name="password">
        <value>bb</value>
    </property>
 </bean>
這裏的realm的值要和java服務器中設置的

resp.setHeader("WWW-Authenticate", "Basic realm=\".\"");
realm相同。

解析發送過來的用戶名和密碼使用:

String auth = req.getHeader("Authorization");
得到的是Basic YWE6YmI=這種格式,後面這一串是用戶名和密碼的base64,解析出來是aa:bb
當得到的不是想要的值時使用

resp.setHeader("WWW-Authenticate", "Basic realm=\".\"");
resp.sendError(HttpServletResponse.SC_UNAUTHORIZED,"Authentication Failed: "); 返回401

當然非常感謝這篇文章:

http://blog.csdn.net/fanbird2008/article/details/7094737

順便再這篇文章中有些百度的圖片顯示不了,用fiddler修改referer後顯示出來了,還不錯





發佈了36 篇原創文章 · 獲贊 0 · 訪問量 3萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章