问题描述
我正在使用 StormProxies 轮换代理服务。
每次请求后,IP 都会轮换……但是,我的 IP 仅在我完全重新启动控制台应用程序时才会轮换。因此,这表明他们的服务正在按照宣传的那样工作,但由于某种原因,尽管在每个循环结束时使用了 .dispose()
,但我的 WebClient 上的循环似乎没有发送新请求/意味着我的代理不会轮换...
我想我会提到,stormproxys 只需要一个用户名/密码。他们在后台做轮换代理的工作……我只需要发送一个新请求。
我如何确保每个循环都是一个全新的请求来强制代理旋转?我的代码如下。
for (int i = 0; i < 25000; i++)
{
number = i;
uaClass ua = new uaClass();
WebClient wc = new WebClient();
ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls | SecurityProtocolType.Tls11 | SecurityProtocolType.Tls12;
try
{
string site = "https://example.com";
wc.Proxy = new WebProxy("11.111.11.111:13012");
wc.Headers.Add("user-agent",uaClass.UAList());
var page = wc.DownloadString(site + i);
HtmlDocument doc = new HtmlDocument();
doc.LoadHtml(page);
var html = doc.DocumentNode.InnerHtml;
foreach (HtmlNode link in doc.DocumentNode.SelectNodes("//*[@id=\"root\"]/div[1]/div/div[2]/div/div[2]/div/div/div[2]/div[2]/a"))
{
var linkHref = link.GetAttributeValue("href",string.Empty);
if (linkHref.Contains("example") || linkHref.Contains("example"))
{
}
else
{
linkHref = "https://www.example.com" + linkHref;
}
if (um.checkRecord(linkHref) == false)
{
um.insertUrl(linkHref);
Console.WriteLine(linkHref + " page: " + i);
}
}
wc.dispose();
}
catch
{
i--;
wc.dispose();
Console.WriteLine("Failed" + Environment.NewLine + "trying " + i + " again");
}
}
没有太多经验,所以如果我很傻,我很抱歉。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)