public FreeIPGenerator2(ProxyProtocolEnum[] proxyProtocolOptions, ProxyAnonymityLevelEnum anonymityLevel, ProxyConnectionSpeedEnum connectionTime, ProxySpeedEnum speed) : this(null, anonymityLevel, speed, connectionTime) { _protocolOptions = proxyProtocolOptions; }
/// <summary> /// /// </summary> /// <param name="Protocol"></param> /// <param name="AnonymityLevel"></param> /// <param name="Speed"></param> /// <param name="ConnectionTime"></param> /// <returns></returns> public FreeProxy GetFreeProxy(ProxyProtocolEnum Protocol = ProxyProtocolEnum.HTTP , ProxyAnonymityLevelEnum AnonymityLevel = ProxyAnonymityLevelEnum.High , ProxySpeedEnum Speed = ProxySpeedEnum.Fast , ProxyConnectionTimeEnum ConnectionTime = ProxyConnectionTimeEnum.Fast) { while (this.FreeProxies == null || this.FreeProxies.Count == 0) { Thread.Sleep(10); } _again: int _faultCount = 0; FreeProxy _freePrx = null; try { var _proxies = FreeProxies.ToArray().Where(p => p.UsageTokenId != UsageTokenId && p.Protocol == Protocol && p.AnonymityLevel == AnonymityLevel && p.Speed == Speed && p.ConnectionTime == ConnectionTime); if (_proxies == null || _proxies.Count() == 0) { UsageTokenId = Guid.NewGuid(); } _freePrx = FreeProxies.ToArray().Where(p => p.UsageTokenId != UsageTokenId && p.Protocol == Protocol && p.AnonymityLevel == AnonymityLevel && p.Speed == Speed && p.ConnectionTime == ConnectionTime).FirstOrDefault(); } catch (ArgumentException ex) { if (_faultCount > 3) { throw ex; } else { _faultCount++; Thread.Sleep(1000); goto _again; } } if (_freePrx != null) { _freePrx.UsageTokenId = UsageTokenId; } return(_freePrx); }