예제 #1
0
        /// <summary>
        ///  使用代理池
        /// </summary>
        /// <param name="spider"></param>
        /// <param name="proxyFinder">代理获取</param>
        /// <param name="proxyValidator">代理有效验证</param>
        /// <param name="reuseInterval">复用间隔时间(ms)</param>
        /// <returns></returns>
        public static Spider UseHttpProxyPools(this Spider spider, IHttpProxyFinder proxyFinder, IProxyValidator proxyValidator, int reuseInterval, int refreshInterval = 2 * 1000)
        {
            DownloaderProxyPools downloaderProxy = new DownloaderProxyPools(proxyFinder, proxyValidator, reuseInterval, refreshInterval);

            spider.SetDownloaderProxy(downloaderProxy);

            return spider;
        }
예제 #2
0
        public HttpProxyPool(IHttpProxyFinder finder, IProxyValidator proxyValidator, int reuseInterval, int refreshInterval = 2 * 1000)
        {
            _finder          = finder;
            _reuseInterval   = reuseInterval;
            _refreshInterval = refreshInterval;

            if (refreshInterval < 100)
            {
                throw new ArgumentException("'refreshInterval' must greater than 100 ");
            }

            _proxyValidator = proxyValidator;

            Task.Run(() => RefreshProxies());
        }
예제 #3
0
 public DownloaderProxyPools(IHttpProxyFinder proxyFinder, IProxyValidator proxyValidator, int reuseInterval, int refreshInterval)
 {
     proxyPool = new HttpProxyPool(proxyFinder, proxyValidator, reuseInterval, refreshInterval);
 }
예제 #4
0
 /// <summary>
 ///  使用代理池
 /// </summary> 
 public static Spider UseHttpProxyPools(this Spider spider, IHttpProxyFinder proxyFinder)
 {
     return UseHttpProxyPools(spider, proxyFinder, new DefaultProxyValidator(), 5000);
 }
예제 #5
0
 /// <summary>
 ///  使用代理池
 /// </summary> 
 public static Spider UseHttpProxyPools(this Spider spider, IHttpProxyFinder proxyFinder, int reuseInterval, int refreshInterval = 2 * 1000)
 {
     return UseHttpProxyPools(spider, proxyFinder, new DefaultProxyValidator(), reuseInterval, refreshInterval);
 }