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]); }