Ejemplo n.º 1
0
 public FreeIPGenerator2(ProxyProtocolEnum[] proxyProtocolOptions,
                         ProxyAnonymityLevelEnum anonymityLevel,
                         ProxyConnectionSpeedEnum connectionTime,
                         ProxySpeedEnum speed)
     : this(null, anonymityLevel, speed, connectionTime)
 {
     _protocolOptions = proxyProtocolOptions;
 }
Ejemplo n.º 2
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="Protocol"></param>
        /// <param name="AnonymityLevel"></param>
        /// <param name="SpeedRateAtLeast"></param>
        /// <param name="ConnectionTimeRateAtLeast"></param>
        /// <returns></returns>
        public FreeProxy GetFreeProxy(ProxyProtocolEnum Protocol = ProxyProtocolEnum.HTTP
                                      , ProxyAnonymityLevelEnum AnonymityLevel = ProxyAnonymityLevelEnum.High
                                      , int SpeedRateAtLeast          = 35
                                      , int ConnectionTimeRateAtLeast = 35)
        {
            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.SpeedRate >= SpeedRateAtLeast &&
                                                           p.ConnectionTimeRate >= ConnectionTimeRateAtLeast);

                if (_proxies == null || _proxies.Count() == 0)
                {
                    UsageTokenId = Guid.NewGuid();
                }

                _freePrx = FreeProxies.ToArray().Where(p => p.UsageTokenId != UsageTokenId &&
                                                       p.Protocol == Protocol &&
                                                       p.AnonymityLevel == AnonymityLevel &&
                                                       p.SpeedRate >= SpeedRateAtLeast &&
                                                       p.ConnectionTimeRate >= ConnectionTimeRateAtLeast).FirstOrDefault();
            }
            catch (ArgumentException ex)
            {
                if (_faultCount > 3)
                {
                    throw ex;
                }
                else
                {
                    _faultCount++;
                    Thread.Sleep(1000);
                    goto _again;
                }
            }

            if (_freePrx != null)
            {
                _freePrx.UsageTokenId = UsageTokenId;
            }

            return(_freePrx);
        }