介绍
我正在制作一个为代理 ips/端口抓取文件/网站的应用程序。该实现纯粹是异步的,以使其以我想要的速度流动。该应用程序的全部目的是找到“活着”的代理。
为了检查代理是否还活着,我正在创建HttpWebRequest
一个特定的网站,如果成功,它是活着的,如果不是,那么就死了。
问题
一个例子:
第一次运行:
- 使用 30k 代理爬取文本文件。
HttpWebRequest
对每个代理做一个,检查它是否“活着”。- 找到 30 个存活的代理。
第二次运行:
- 使用 30k 代理爬取相同的文本文件。
HttpWebRequest
对每个代理做一个,检查它是否“活着”。- 找到 0 个存活的代理。
如果我等待大约 10 分钟,那么第二次运行将产生大约 30 个还活着的代理。否则,它只会在它们上超时,并将它们标记为已死。
正如您可能已经知道的那样,我的问题是为什么第二次运行不会产生与第一次运行相同或接近的结果。
我改变了以下内容:
ServicePointManager.DefaultConnectionLimit = int.MaxValue
, 和ServicePointManager.MaxServicePoints = int.MaxValue
这是我的网络的基本限制,还是其他原因?