我如何从文本框调用下一个代理而不是使用随机下一个?
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);
}
}
您好,我有一个关于从 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);
}
}