您的位置:首页 > 新闻资讯 >文章内容
验证代理IP是否可用的代码
来源:互联网 作者:admin 时间:2019-10-09 11:03:19

  使用代理IP之前要做的一步操作就是要验证代理IP是否可用,如果IP是无效的,那么项目是无法成功启动的,所以这一个步骤是不可以缺少的。这也是为什么每一个爬虫程序开展之前都要有这么一步的原因。下面我们看看如何去快速验证代理IP的可用性,可用通过一个代码来实现。

  

验证代理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 = 0;

  int goods = 0;

  int repeat = 0;

  using (var stream = new StreamReader(file))

  {

  while (!stream.EndOfStream)

  {

  num++;

  string linetemp = stream.ReadLine().Trim().ToLower();

  string[] iptxt = linetemp.Split(':');

  if (iptxt.Count() == 2)

  {

  lock (Config.lock_prxoy)

  {

  var data = Config._prxoyList.Where(m => m.ip == iptxt[0]).FirstOrDefault();

  if (data != null)

  {

  repeat++;

  continue;

  }

  }

  goods++;

  Model.ProxyIP _proxyip = new Model.ProxyIP();

  _proxyip.ip = iptxt[0];

  _proxyip.prot = int.Parse(iptxt[1]);

  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[2].Text = "有效";

  }));

  }

  else

  {

  _model.filter = Model.filterIP.无效;

  this.Invoke(new Action(() =>

  {

  _dic[_model.ip].SubItems[2].Text = "无效";

  }));

  }

  });

  TaskList.Add(task);

  }

  }

  System.Threading.Tasks.Task.WaitAll(TaskList.ToArray());

  txtmsg.Invoke(new Action(() =>

  {

  txtmsg.AppendText(Config._prxoyList[0].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 = 1000; //超时

  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;

  }

  }

  }


  使用这个代码去进行过滤效果非常好,而且执行速度也快,以上是主要代码部分,足够大家使用了。


相关文章内容简介
推荐阅读
  • 16 2019-12
    用代理ip​做补量安全吗?

    用代理ip​做补量安全吗?随着互联网的不断发展,广大网民朋友对代理IP的认识也越来越多,尤其是做效果补量的用户,工作中简直离不开代理IP。但不可否认的是,很多人对于代理IP上网是否安

  • 07 2020-08
    代理ip免费有风险

    在工作生活中,很多事情都是伴随着风险的,使用代理ip也不例外,相对于付费代理ip来讲,确实是免费代理ip风险大些,不过这不等于付费代理ip就没有风险了噢。

  • 28 2019-05
    短效动态代理IP指什么?

    短效动态代理IP指什么?大部分人使用的IP都是动态的,可以更换的,只是能更换的数量比较少,尤其是局域网,这IP地址怎么更换其对外IP地址都是一致的,这对一些项目来说很不方便。所有有

  • 17 2019-05
    使用https代理ip降低网络风险

    使用https代理ip降低网络风险,互联网急速发展的今天,网络安全急需得到人们重视,因此衍生的https代理ip变得必不可少了。使用代理ip可以保护自己的本地ip,防止被黑被入侵,来保障个人信息

  • 21 2019-03
    使用代理IP池伪装爬虫IP地址可以继续爬

    爬虫的IP地址如果没有伪装好,这是非常容易被封的,影响效率不说,还拿不到数据。因此,对于爬虫而言,代理IP池是非常重要的。如果爬虫使用了高质量的代理IP池,可以很好的伪装自己的IP

  • 28 2019-11
    手机设置代理IP教程

    好像看到介绍电脑使用代理IP的教程比较多,那么手机要怎么使用代理IP呢?现在大家都使用手机上网比较频繁,手机上要怎么设置代理IP,我们一起来看看要如何操作。

在线咨询
大客户经理
大客户经理
1829380381
13316264505

大客户经理微信

微信公众号

微信公众号

回到顶部