0

何ヶ月も前から、https サイトをクロールするためにクローラー 4j を使用してきました。突然、先週の金曜日以降、まったく同じ https サイトをクロールできなくなりました。https プロトコルで何か変更がありましたか? サイトはhttps://enot.publicprocurement.be/enot-war/home.do

テストとして、タイトルを取得してみてください: Welkom op het platform e-Notification

どんな助けでも大歓迎です。

4

3 に答える 3

0

この PageFetcher サブクラスを PageFetcher の代わりに使用できます。これですべての問題が解決しました。

import java.security.KeyManagementException;
import java.security.KeyStoreException;
import java.security.NoSuchAlgorithmException;

import javax.net.ssl.SSLContext;

import org.apache.http.ssl.SSLContextBuilder;
import org.apache.http.client.config.RequestConfig;
import org.apache.http.conn.ssl.NoopHostnameVerifier;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.impl.conn.PoolingHttpClientConnectionManager;

import edu.uci.ics.crawler4j.crawler.CrawlConfig;
import edu.uci.ics.crawler4j.fetcher.PageFetcher;

public class PageFetcher2 extends PageFetcher {

public static final String DEFAULT_USER_AGENT = "Mozilla/5.0 (X11; Ubuntu; Linux i686; rv:45.0) Gecko/20100101 Firefox/45.0";
public static final RequestConfig DEFAULT_REQUEST_CONFIG = RequestConfig.custom().setConnectTimeout(30 * 1000)
        .setSocketTimeout(60 * 1000).build();

public PageFetcher2(CrawlConfig config) throws KeyManagementException, NoSuchAlgorithmException, KeyStoreException {
    super(config);

    PoolingHttpClientConnectionManager connectionManager = new PoolingHttpClientConnectionManager();
    connectionManager.setMaxTotal(30);
    connectionManager.setDefaultMaxPerRoute(30);

    SSLContext sslContext = new SSLContextBuilder()
              .loadTrustMaterial(null, (certificate, authType) -> true).build();

    httpClient = HttpClients.custom()
              .setSSLContext(sslContext)
              .setSSLHostnameVerifier(new NoopHostnameVerifier())
              .setConnectionManager(connectionManager)
              .setUserAgent(DEFAULT_USER_AGENT)
              .setDefaultRequestConfig(DEFAULT_REQUEST_CONFIG)
              .build();
}

}
于 2017-09-29T10:27:59.230 に答える
0

同じ問題がありました。これを修正するには、カスタマイズされた PageFetcher が必要です。ここでサンプルを見つけることができます。 http://code.google.com/p/crawler4j/issues/detail?id=174

于 2014-02-03T10:06:27.400 に答える