Heritrix3.1.0RC1使用Cookie不能自动登录问题的一个解决办法

改FetchHTTP类,

 

1、在innerProcess方法中的代码

this.http.executeMethod(customConfigOrNull, method);

之前增加:

populateCookies(method);

 

2、增加私有方法如下:

    private void populateCookies(HttpMethodBase method) {
        Map<String, Cookie> cookieMap = cookieStorage.getCookiesMap();
        
        //没设置Cookie.
        if(cookieMap == null || cookieMap.size() == 0) {
            return;
        }
        
        StringBuilder sb = new StringBuilder("");
        for(Cookie cookie : cookieMap.values()) {
            sb.append(cookie.getName());
            sb.append('=');
            sb.append(cookie.getValue());
            sb.append(';');
        }
        method.setRequestHeader("Cookie", sb.deleteCharAt(sb.length() - 1).toString());
    }

 

3、修改AbstractCookieStorage类,在记录日志的代码之前增加

result.put(cookie.getSortKey(), cookie)

 把Cookie放入到Map中,在FetchHTTP的start()方法中,得到配置文件中设置的Cookies。

 

 

 

 

你可能感兴趣的:(crawler,Heritrix3)