Пример #1
0
 public FreeIPGenerator2(ProxyProtocolEnum[] proxyProtocolOptions,
                         ProxyAnonymityLevelEnum anonymityLevel,
                         ProxyConnectionSpeedEnum connectionTime,
                         ProxySpeedEnum speed)
     : this(null, anonymityLevel, speed, connectionTime)
 {
     _protocolOptions = proxyProtocolOptions;
 }
Пример #2
0
        /// <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);
        }