FreeAnony-代理采集设置工具
这个名字确实有点不太好。。因为刚开始我想到这个工具是在今天早上看到一个别人的代理工具的时候,突然想做的,没有好好规化,结果后来代码越写越多。。不过收获很大。 先看界面,因为是简单实现一下,所以就不要吐槽界面了。。 刚开始想的思路就是先去一个经常发布代理IP的网页去采集。然后解析成一条条的信息。然后显示出来。中途遇到几个问题,一个就是在做代理验证的时候,没有用多线程,导致直接界面无响应。另一个就是DataGridView控件要实现对一个数组的绑定,需要的一个实体对象。 public IPEntity[] GetIpInfo(string url) { //获得网页源码 string content = Get_Http(url); //定位代理ip位置 int start = content.IndexOf("</strong></u></a><BR>"); int end = content.LastIndexOf("<BR><SCRIPT type=text/javascript>"); //提取并去除一些冗余代码 string subContent = content.Substring(start, end - start).Substring(21); subContent = subContent.Replace(" dn28.com", ""); //通过br标签分隔代理列表为数组 string[] sArray = Regex.Split(subContent, "<br>", RegexOptions.IgnoreCase); IPEntity[] list = new IPEntity[sArray.Length]; int j = 0; foreach (string i in sArray) { int addrpos = i.IndexOf(":"); string ipaddress = i.Substring(0, addrpos); int portpos = i.IndexOf("@"); string ipport = i.Substring(addrpos + 1, portpos - addrpos - 1); int typepos = i.IndexOf(";"); string iptype = i.Substring(portpos + 1, typepos - portpos - 1); string ipcountry = i.Substring(typepos + 1); list[j++] = new IPEntity(ipaddress, ipport, iptype, ipcountry); } return list; } 这部分就是先得到网页源码,然后通过IndexOf和LastIndexOf定位到ip组的位置。这是通过分析源码来确定参数的。最后通过 标签分割成字符数组。数组元素类似于112.25.12.37:80@HTTP;江苏省 移动,然后就是继续分割成一部分,构造了一个IPEntity的数组。在按钮中绑定到DataGridView中即可 IPEntity类的定义如下:这里面设置了一个status属性,用于后面代理验证的时候进行标记。 public class IPEntity { string _Address; string _Port; string _Type; string _Country; string _Status; public string Address { get { return _Address; } set { _Address = value; } } public string Port { get { return _Port; } set { _Port = value; } } public string Status { get { return _Status; } set { _Status = value; } } public string Type { get { return _Type; } set { _Type = value; } } public string Country { get { return _Country; } set { _Country = value; } } public IPEntity(string Address, string Port,string Type,string Country) { this._Address = Address; this._Port = Port; this._Type = Type; this._Country = Country; } } 然后是验证ip可用性的部分。这部分主要的代码是验证DataGridView中的ip地址可用性 ...