1. private void 导入IPToolStripMenuItem_Click(object sender, EventArgs e)
  2. {
  3. using (OpenFileDialog Openfile = new OpenFileDialog())
  4. {
  5. Openfile.Filter = "文本文件|*.txt";
  6. Openfile.Multiselect = false;
  7. if (Openfile.ShowDialog() == DialogResult.OK)
  8. {
  9. Thread threadfile = new Thread(() => ReadFileIP(Openfile.FileName)) { IsBackground = true };
  10. threadfile.Start();
  11. }
  12. }
  13. }
  14. /// <summary>
  15. /// 读取txt代理ip
  16. /// </summary>
  17. /// <param name="filename"></param>
  18. private void ReadFileIP(string filename)
  19. {
  20. txtmsg.BeginInvoke(new Action(() =>
  21. {
  22. txtmsg.AppendText("开始导入IP代理!".SetLog());
  23. }));
  24. var file = File.Open(filename, FileMode.Open);
  25. int num = ;
  26. int goods = ;
  27. int repeat = ;
  28. using (var stream = new StreamReader(file))
  29. {
  30. while (!stream.EndOfStream)
  31. {
  32. num++;
  33. string linetemp = stream.ReadLine().Trim().ToLower();
  34. string[] iptxt = linetemp.Split(':');
  35. if (iptxt.Count() == )
  36. {
  37. lock (Config.lock_prxoy)
  38. {
  39. var data = Config._prxoyList.Where(m => m.ip == iptxt[]).FirstOrDefault();
  40. if (data != null)
  41. {
  42. repeat++;
  43. continue;
  44. }
  45. }
  46. goods++;
  47. Model.ProxyIP _proxyip = new Model.ProxyIP();
  48. _proxyip.ip = iptxt[];
  49. _proxyip.prot = int.Parse(iptxt[]);
  50. ListViewItem item = new ListViewItem(_proxyip.ip);
  51. item.SubItems.Add(_proxyip.prot.ToString());
  52. item.SubItems.Add("");
  53. listViewIP.Invoke(new Action(() =>
  54. {
  55. ListViewItem itemresult = listViewIP.Items.Add(item);
  56. _dic.Add(_proxyip.ip, itemresult);
  57. //dic.Add(_send.Tel, backitem);
  58. }));
  59. lock (Config.lock_prxoy)
  60. {
  61. Config._prxoyList.Add(_proxyip);
  62. }
  63. }
  64. }
  65. }
  66. txtmsg.Invoke(new Action(() =>
  67. {
  68. string log = string.Format("添加代理IP完成!有效数据为:{0},过滤重复数据:{1},总数据:{2}", goods.ToString(), repeat.ToString(), num.ToString());
  69. txtmsg.AppendText(log.SetLog());
  70. }));
  71. Thread filter = new Thread(new ThreadStart(filterIP)) { IsBackground = true };
  72. filter.Start();
  73. }
  74. private void filterIP()
  75. {
  76. txtmsg.Invoke(new Action(() =>
  77. {
  78. txtmsg.AppendText("正在过滤IP数据!".SetLog());
  79. }));
  80. List<System.Threading.Tasks.Task> TaskList = new List<System.Threading.Tasks.Task>();
  81. lock (Config.lock_prxoy)
  82. {
  83. foreach (Model.ProxyIP _model in Config._prxoyList)
  84. {
  85. var task = System.Threading.Tasks.Task.Factory.StartNew(() =>
  86. {
  87. bool reslut = VerIP(_model.ip, _model.prot);
  88. if (reslut)
  89. {
  90. _model.filter = Model.filterIP.有效;
  91. this.Invoke(new Action(() =>
  92. {
  93. _dic[_model.ip].SubItems[].Text = "有效";
  94. }));
  95. }
  96. else
  97. {
  98. _model.filter = Model.filterIP.无效;
  99. this.Invoke(new Action(() =>
  100. {
  101. _dic[_model.ip].SubItems[].Text = "无效";
  102. }));
  103. }
  104. });
  105. TaskList.Add(task);
  106. }
  107. }
  108. System.Threading.Tasks.Task.WaitAll(TaskList.ToArray());
  109. txtmsg.Invoke(new Action(() =>
  110. {
  111. txtmsg.AppendText(Config._prxoyList[].filter.ToString() + "过滤IP数据完成!".SetLog());
  112. }));
  113. }
  114.  
  115. private bool VerIP(string ip,int port)
  116. {
  117. try
  118. {
  119. HttpWebRequest Req;
  120. HttpWebResponse Resp;
  121. WebProxy proxyObject = new WebProxy(ip, port);// port为端口号 整数型
  122. Req = WebRequest.Create("https://www.baidu.com") as HttpWebRequest;
  123. Req.Proxy = proxyObject; //设置代理
  124. Req.Timeout = ; //超时
  125. Resp = (HttpWebResponse)Req.GetResponse();
  126. Encoding bin = Encoding.GetEncoding("UTF-8");
  127. using (StreamReader sr = new StreamReader(Resp.GetResponseStream(), bin))
  128. {
  129. string str = sr.ReadToEnd();
  130. if (str.Contains("百度"))
  131. {
  132. Resp.Close();
  133. return true;
  134. }
  135. else
  136. {
  137. return false;
  138. }
  139. }
  140.  
  141. }
  142. catch (Exception ex)
  143. {
  144. return false;
  145. }
  146. }
  147. }

主要的代码 ,我就贴上来了,那些model实体的,你们估计也用不到,这个过滤速度很快,哈哈。

C# 验证过滤代理IP是否有效的更多相关文章

  1. python爬虫成长之路(二):抓取代理IP并多线程验证

    上回说到,突破反爬虫限制的方法之一就是多用几个代理IP,但前提是我们得拥有有效的代理IP,下面我们来介绍抓取代理IP并多线程快速验证其有效性的过程. 一.抓取代理IP 提供免费代理IP的网站还挺多的, ...

  2. 维护爬虫代理IP池--采集并验证

    任务分析 我们爬的免费代理来自于https://www.kuaidaili.com这个网站.用`requests`将ip地址与端口采集过来,将`IP`与`PORT`组合成`requests`需要的代理 ...

  3. Python3.x:免费代理ip的批量获取并入库

    Python3.x:免费代理ip的批量获取并入库 一.简介 网络爬虫的世界,向来都是一场精彩的攻防战.现在许多网站的反爬虫机制在不断的完善,其中最令人头疼的,莫过于直接封锁你的ip.但是道高一尺魔高一 ...

  4. 【原创】验证代理IP是否有用

    /// <summary> /// 验证代理IP是否有用 /// </summary> /// <param name="ip">IP地址< ...

  5. 爬虫爬取代理IP池及代理IP的验证

    最近项目内容需要引入代理IP去爬取内容. 为了项目持续运行,需要不断构造.维护.验证代理IP. 为了绕过服务端对IP 和 频率的限制,为了阻止服务端获取真正的主机IP. 一.服务器如何获取客户端IP ...

  6. 代理IP爬取和验证(快代理&西刺代理)

    前言 仅仅伪装网页agent是不够的,你还需要一点新东西 今天主要讲解两个比较知名的国内免费IP代理网站:西刺代理&快代理,我们主要的目标是爬取其免费的高匿代理,这些IP有两大特点:免费,不稳 ...

  7. Python 快速验证代理IP是否有效

    有时候,我们需要用到代理IP,比如在爬虫的时候,但是得到了IP之后,可能不知道怎么验证这些IP是不是有效的,这时候我们可以使用Python携带该IP来模拟访问某一个网站,如果多次未成功访问,则说明这个 ...

  8. 验证代理IP

    ##author:wuhao#import urllib.requestfrom http import cookiejar import xlrd import threading #有效的代理,可 ...

  9. Java 验证代理ip

    原文地址:http://www.cnblogs.com/junrong624/p/5416503.html 1 import java.io.IOException; import java.io.I ...

随机推荐

  1. Django实现自定义template页面并在admin site的app模块中加入自定义跳转链接

    在文章 Django实现自定义template页面并在admin site的app模块中加入自定义跳转链接(一) 中我们成功的为/feedback/feedback_stats/路径自定义了使用tem ...

  2. swift @AUTOCLOSURE 和 ?? ||

    * {-webkit-tap-highlight-color: rgba(0,0,0,0);}html {-webkit-text-size-adjust: none;}body {font-fami ...

  3. PHP写的一个轻量级的DI容器类(转)

    理解什么是Di/IoC,依赖注入/控制反转.两者说的是一个东西,是当下流行的一种设计模式.大致的意思就是,准备一个盒子(容器),事先将项目中可能用到的类扔进去,在项目中直接从容器中拿,也就是避免了直接 ...

  4. 【Java笔记】配置文件java.util.Properties类的使用

    配置文件的路径:项目名/src/main/resources/mmall.properties mmall.properties的内容是键值对.例如假设写了ftp服务器的一些信息. ftp.serve ...

  5. android开发(40) 初试 Volley - GoogleI02013上的“快速,简单的网络通讯库”

    什么是Volley Google I/O 2013上,Volley发布了.Volley是Android平台上的网络通信库,能使网络通信更快,更简单,更健壮.这是Volley名称的由来: a burst ...

  6. ie6幽灵文字及解决办法

    <!-- ie6 幽灵文字示例 --> <div style="width: 400px;"> <div style="float: lef ...

  7. jPlayer 视频播放

    在网页中播放MP4格式视频代码:显示效果如下图,缺陷是不能自动适应页面大小,只能全屏 <!DOCTYPE html> <html> <head> <meta ...

  8. Sword redis配置

    Redis 配置 Redis 的配置文件位于 Redis 安装目录下,文件名为 redis.conf. --查看配置 你可以通过 CONFIG 命令查看或设置配置项(使用CONFIG必须在redis客 ...

  9. 关于Dijkstra算法

    Dijkstra算法 1.定义概览 Dijkstra(迪杰斯特拉)算法是典型的单源最短路径算法,用于计算一个节点到其他所有节点的最短路径.主要特点是以起始点为中心向外层层扩展,直到扩展到终点为止.Di ...

  10. ASK,OOK,FSK的联系和区别

    转自:http://www.cnblogs.com/zhihongyu/archive/2012/04/12/2443617.html ASK是幅移键控调制的简写,例如二进制的,把二进制符号0和1分别 ...