我如何从文本框调用下一个代理而不是使用随机下一个?

Ho do i call the next proxy from a textbox instead of using random next?

您好,我有一个关于从 c# webclient 中的文本框调用代理的问题。 现在我可以从文本框中获得一个随机的下一个代理,但我想在每次发出请求时调用第二个代理而不是随机的。

我现在使用的代码是:

readonly List<string> proxies = new List<string>();

WebProxy RandomProxy
    {
        get
        {
            return proxies.Count == 0 ?
                null :
                new WebProxy(proxies[rnd.Next(proxies.Count)]);

        }
    }

proxies.Clear();
proxies.AddRange(txtProxy.Lines.Where(p => !String.IsNullOrWhiteSpace(p)));

var proxy = RandomProxy;
var wc = new WebClient { Proxy = proxy };

在分析请求后,我注意到代理正在发生变化,但我希望如何调用代理。所以每个请求都使用文本框中的下一个代理。

这里有人可以向我解释如何更改吗? 提前致谢。 问候, 丹尼斯

是你想要的吗?

// queue to get proxies in order started with random index
private Queue<string> sortedProxies;

WebProxy NextProxy
{
    get
    {
        if (sortedProxies == null)
        {
            var proxyCount = proxies.Count;
            var randomIndex = rnd.Next(proxyCount);
            // get proxies from random index to the end of the list
            var sortedProxyList = proxies.GetRange(randomIndex, proxyCount -randomIndex);
            // add proxies from start to the random index ('loop' for all proxies
            sortedProxyList.AddRange(proxies.GetRange(0, randomIndex));


            sortedProxies = new Queue<string>(sortedProxyList);
        }

        // dequeue the next proxy
        var proxy = sortedProxies.Dequeue();
        // enqueue proxy again for infinity loop
        sortedProxies.Enqueue(proxy);

        return new WebProxy(proxy);
    }
}