コード例 #1
0
        private CookieContainer GenerateNewCookieContainer(ISpider spider, IDownloader downloader, CookieContainer cookieContainer, ICookieInjector cookieInjector = null)
        {
            var key = cookieInjector == null ? $"{cookieContainer.GetHashCode()}" : $"{cookieContainer.GetHashCode()}_{cookieInjector?.GetHashCode()}";

            if (!_initedCookieContainers.ContainsKey(key))
            {
                cookieInjector?.Inject(downloader, spider);
                // 此处完成COPY一个新的Container的原因是, 某此网站会在COOKIE中设置值, 上下访问有承向启下的关系, 所以必须独立的CookieContainer来管理
                var newCookieContainer = CopyCookieContainer(cookieContainer);
                _initedCookieContainers.Add(key, newCookieContainer);
            }
            return(_initedCookieContainers[key]);
        }