C# 验证过滤代理IP是否有效
- private void 导入IPToolStripMenuItem_Click(object sender, EventArgs e)
- {
- using (OpenFileDialog Openfile = new OpenFileDialog())
- {
- Openfile.Filter = "文本文件|*.txt";
- Openfile.Multiselect = false;
- if (Openfile.ShowDialog() == DialogResult.OK)
- {
- Thread threadfile = new Thread(() => ReadFileIP(Openfile.FileName)) { IsBackground = true };
- threadfile.Start();
- }
- }
- }
- /// <summary>
- /// 读取txt代理ip
- /// </summary>
- /// <param name="filename"></param>
- private void ReadFileIP(string filename)
- {
- txtmsg.BeginInvoke(new Action(() =>
- {
- txtmsg.AppendText("开始导入IP代理!".SetLog());
- }));
- var file = File.Open(filename, FileMode.Open);
- int num = ;
- int goods = ;
- int repeat = ;
- using (var stream = new StreamReader(file))
- {
- while (!stream.EndOfStream)
- {
- num++;
- string linetemp = stream.ReadLine().Trim().ToLower();
- string[] iptxt = linetemp.Split(':');
- if (iptxt.Count() == )
- {
- lock (Config.lock_prxoy)
- {
- var data = Config._prxoyList.Where(m => m.ip == iptxt[]).FirstOrDefault();
- if (data != null)
- {
- repeat++;
- continue;
- }
- }
- goods++;
- Model.ProxyIP _proxyip = new Model.ProxyIP();
- _proxyip.ip = iptxt[];
- _proxyip.prot = int.Parse(iptxt[]);
- ListViewItem item = new ListViewItem(_proxyip.ip);
- item.SubItems.Add(_proxyip.prot.ToString());
- item.SubItems.Add("");
- listViewIP.Invoke(new Action(() =>
- {
- ListViewItem itemresult = listViewIP.Items.Add(item);
- _dic.Add(_proxyip.ip, itemresult);
- //dic.Add(_send.Tel, backitem);
- }));
- lock (Config.lock_prxoy)
- {
- Config._prxoyList.Add(_proxyip);
- }
- }
- }
- }
- txtmsg.Invoke(new Action(() =>
- {
- string log = string.Format("添加代理IP完成!有效数据为:{0},过滤重复数据:{1},总数据:{2}", goods.ToString(), repeat.ToString(), num.ToString());
- txtmsg.AppendText(log.SetLog());
- }));
- Thread filter = new Thread(new ThreadStart(filterIP)) { IsBackground = true };
- filter.Start();
- }
- private void filterIP()
- {
- txtmsg.Invoke(new Action(() =>
- {
- txtmsg.AppendText("正在过滤IP数据!".SetLog());
- }));
- List<System.Threading.Tasks.Task> TaskList = new List<System.Threading.Tasks.Task>();
- lock (Config.lock_prxoy)
- {
- foreach (Model.ProxyIP _model in Config._prxoyList)
- {
- var task = System.Threading.Tasks.Task.Factory.StartNew(() =>
- {
- bool reslut = VerIP(_model.ip, _model.prot);
- if (reslut)
- {
- _model.filter = Model.filterIP.有效;
- this.Invoke(new Action(() =>
- {
- _dic[_model.ip].SubItems[].Text = "有效";
- }));
- }
- else
- {
- _model.filter = Model.filterIP.无效;
- this.Invoke(new Action(() =>
- {
- _dic[_model.ip].SubItems[].Text = "无效";
- }));
- }
- });
- TaskList.Add(task);
- }
- }
- System.Threading.Tasks.Task.WaitAll(TaskList.ToArray());
- txtmsg.Invoke(new Action(() =>
- {
- txtmsg.AppendText(Config._prxoyList[].filter.ToString() + "过滤IP数据完成!".SetLog());
- }));
- }
- private bool VerIP(string ip,int port)
- {
- try
- {
- HttpWebRequest Req;
- HttpWebResponse Resp;
- WebProxy proxyObject = new WebProxy(ip, port);// port为端口号 整数型
- Req = WebRequest.Create("https://www.baidu.com") as HttpWebRequest;
- Req.Proxy = proxyObject; //设置代理
- Req.Timeout = ; //超时
- Resp = (HttpWebResponse)Req.GetResponse();
- Encoding bin = Encoding.GetEncoding("UTF-8");
- using (StreamReader sr = new StreamReader(Resp.GetResponseStream(), bin))
- {
- string str = sr.ReadToEnd();
- if (str.Contains("百度"))
- {
- Resp.Close();
- return true;
- }
- else
- {
- return false;
- }
- }
- }
- catch (Exception ex)
- {
- return false;
- }
- }
- }
主要的代码 ,我就贴上来了,那些model实体的,你们估计也用不到,这个过滤速度很快,哈哈。
C# 验证过滤代理IP是否有效的更多相关文章
- python爬虫成长之路(二):抓取代理IP并多线程验证
上回说到,突破反爬虫限制的方法之一就是多用几个代理IP,但前提是我们得拥有有效的代理IP,下面我们来介绍抓取代理IP并多线程快速验证其有效性的过程. 一.抓取代理IP 提供免费代理IP的网站还挺多的, ...
- 维护爬虫代理IP池--采集并验证
任务分析 我们爬的免费代理来自于https://www.kuaidaili.com这个网站.用`requests`将ip地址与端口采集过来,将`IP`与`PORT`组合成`requests`需要的代理 ...
- Python3.x:免费代理ip的批量获取并入库
Python3.x:免费代理ip的批量获取并入库 一.简介 网络爬虫的世界,向来都是一场精彩的攻防战.现在许多网站的反爬虫机制在不断的完善,其中最令人头疼的,莫过于直接封锁你的ip.但是道高一尺魔高一 ...
- 【原创】验证代理IP是否有用
/// <summary> /// 验证代理IP是否有用 /// </summary> /// <param name="ip">IP地址< ...
- 爬虫爬取代理IP池及代理IP的验证
最近项目内容需要引入代理IP去爬取内容. 为了项目持续运行,需要不断构造.维护.验证代理IP. 为了绕过服务端对IP 和 频率的限制,为了阻止服务端获取真正的主机IP. 一.服务器如何获取客户端IP ...
- 代理IP爬取和验证(快代理&西刺代理)
前言 仅仅伪装网页agent是不够的,你还需要一点新东西 今天主要讲解两个比较知名的国内免费IP代理网站:西刺代理&快代理,我们主要的目标是爬取其免费的高匿代理,这些IP有两大特点:免费,不稳 ...
- Python 快速验证代理IP是否有效
有时候,我们需要用到代理IP,比如在爬虫的时候,但是得到了IP之后,可能不知道怎么验证这些IP是不是有效的,这时候我们可以使用Python携带该IP来模拟访问某一个网站,如果多次未成功访问,则说明这个 ...
- 验证代理IP
##author:wuhao#import urllib.requestfrom http import cookiejar import xlrd import threading #有效的代理,可 ...
- Java 验证代理ip
原文地址:http://www.cnblogs.com/junrong624/p/5416503.html 1 import java.io.IOException; import java.io.I ...
随机推荐
- Django实现自定义template页面并在admin site的app模块中加入自定义跳转链接
在文章 Django实现自定义template页面并在admin site的app模块中加入自定义跳转链接(一) 中我们成功的为/feedback/feedback_stats/路径自定义了使用tem ...
- swift @AUTOCLOSURE 和 ?? ||
* {-webkit-tap-highlight-color: rgba(0,0,0,0);}html {-webkit-text-size-adjust: none;}body {font-fami ...
- PHP写的一个轻量级的DI容器类(转)
理解什么是Di/IoC,依赖注入/控制反转.两者说的是一个东西,是当下流行的一种设计模式.大致的意思就是,准备一个盒子(容器),事先将项目中可能用到的类扔进去,在项目中直接从容器中拿,也就是避免了直接 ...
- 【Java笔记】配置文件java.util.Properties类的使用
配置文件的路径:项目名/src/main/resources/mmall.properties mmall.properties的内容是键值对.例如假设写了ftp服务器的一些信息. ftp.serve ...
- android开发(40) 初试 Volley - GoogleI02013上的“快速,简单的网络通讯库”
什么是Volley Google I/O 2013上,Volley发布了.Volley是Android平台上的网络通信库,能使网络通信更快,更简单,更健壮.这是Volley名称的由来: a burst ...
- ie6幽灵文字及解决办法
<!-- ie6 幽灵文字示例 --> <div style="width: 400px;"> <div style="float: lef ...
- jPlayer 视频播放
在网页中播放MP4格式视频代码:显示效果如下图,缺陷是不能自动适应页面大小,只能全屏 <!DOCTYPE html> <html> <head> <meta ...
- Sword redis配置
Redis 配置 Redis 的配置文件位于 Redis 安装目录下,文件名为 redis.conf. --查看配置 你可以通过 CONFIG 命令查看或设置配置项(使用CONFIG必须在redis客 ...
- 关于Dijkstra算法
Dijkstra算法 1.定义概览 Dijkstra(迪杰斯特拉)算法是典型的单源最短路径算法,用于计算一个节点到其他所有节点的最短路径.主要特点是以起始点为中心向外层层扩展,直到扩展到终点为止.Di ...
- ASK,OOK,FSK的联系和区别
转自:http://www.cnblogs.com/zhihongyu/archive/2012/04/12/2443617.html ASK是幅移键控调制的简写,例如二进制的,把二进制符号0和1分别 ...