private void ResolveIPAddress(IList <BaiDuResultInfo> resultList, string scanClass) { try { BaiDuResultInfo origin = resultList[resultList.Count - 1]; IPAddress[] ips = Dns.GetHostAddresses(origin.Domain); if (ips.Length == 0) { resultList[resultList.Count - 1].IP = "未知"; } else if (ips.Length == 1) {//单IP resultList[resultList.Count - 1].IP = ips[0].ToString(); AppendClass(resultList, scanClass); } else { resultList[resultList.Count - 1].IP = ips[0].ToString(); AppendClass(resultList, scanClass); string lastIp = origin.IP; for (int i = 1; i < ips.Length; i++) { //同段的IP忽略 if (!IsSameClass(lastIp, ips[i].ToString(), scanClass)) { BaiDuResultInfo bdri = new BaiDuResultInfo(); bdri.ID = origin.ID; bdri.Title = ""; bdri.Url = ""; bdri.IP = ips[i].ToString(); bdri.RowIndex = rowIndex++; resultList.Add(bdri); AppendClass(resultList, scanClass); lastIp = bdri.IP; } } } } catch { resultList[resultList.Count - 1].IP = "未知"; } }
void AppendClass(IList <BaiDuResultInfo> resultList, string scanClass) { string ip = resultList[resultList.Count - 1].IP; if (ip.Contains(".")) { string[] ipSeg = ip.Split(new char[] { '.' }, StringSplitOptions.RemoveEmptyEntries); if (scanClass == "C") { int current = Convert.ToInt32(ipSeg[3]); for (int i = 1; i < 255; i++) { if (i == current) { continue; } BaiDuResultInfo bdri = new BaiDuResultInfo(); bdri.Title = ""; bdri.Url = ""; bdri.IP = string.Format("{0}.{1}.{2}.{3}", ipSeg[0], ipSeg[1], ipSeg[2], i); bdri.RowIndex = rowIndex++; resultList.Add(bdri); } } else if (scanClass == "B") { int current = Convert.ToInt32(ipSeg[2]); for (int i = 1; i < 255; i++) { if (i == current) { continue; } BaiDuResultInfo bdri = new BaiDuResultInfo(); bdri.Title = ""; bdri.Url = ""; bdri.IP = string.Format("{0}.{1}.{2}.{3}", ipSeg[0], ipSeg[1], i, ipSeg[3]); bdri.RowIndex = rowIndex++; resultList.Add(bdri); } } } }
void AppendClass(IList<BaiDuResultInfo> resultList, string scanClass) { string ip = resultList[resultList.Count - 1].IP; if (ip.Contains(".")) { string[] ipSeg = ip.Split(new char[] { '.' }, StringSplitOptions.RemoveEmptyEntries); if (scanClass == "C") { int current = Convert.ToInt32(ipSeg[3]); for (int i = 1; i < 255 ; i++) { if (i == current) continue; BaiDuResultInfo bdri = new BaiDuResultInfo(); bdri.Title = ""; bdri.Url = ""; bdri.IP = string.Format("{0}.{1}.{2}.{3}", ipSeg[0], ipSeg[1], ipSeg[2], i); bdri.RowIndex = rowIndex++; resultList.Add(bdri); } } else if (scanClass == "B") { int current = Convert.ToInt32(ipSeg[2]); for (int i = 1; i < 255; i++) { if (i == current) continue; BaiDuResultInfo bdri = new BaiDuResultInfo(); bdri.Title = ""; bdri.Url = ""; bdri.IP = string.Format("{0}.{1}.{2}.{3}", ipSeg[0], ipSeg[1],i, ipSeg[3]); bdri.RowIndex = rowIndex++; resultList.Add(bdri); } } } }
void HttpGet(object p) { int[] range = p as int[]; int startIndex = range[0]; int endIndex = range[1]; HttpWebRequest req; for (; startIndex < endIndex; startIndex++) { BaiDuResultInfo bd = this.m_DataSource[startIndex]; try { req = (HttpWebRequest)HttpWebRequest.Create(lastDomain); req.UserAgent = "Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13"; req.Accept = "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8"; req.Headers[HttpRequestHeader.AcceptLanguage] = "zh-cn,zh;q=0.5"; req.Headers[HttpRequestHeader.AcceptCharset] = "GB2312,utf-8;q=0.7,*;q=0.7"; req.Headers[HttpRequestHeader.AcceptEncoding] = "gzip,deflate"; req.Method = "GET"; req.Proxy = new WebProxy(bd.IP, 80); req.Timeout = this.m_TimeOut; req.CookieContainer = new CookieContainer(); using (HttpWebResponse response = (HttpWebResponse)req.GetResponse()) { this.m_DataSource[bd.RowIndex].ContentLength = response.ContentLength; this.m_DataSource[bd.RowIndex].HttpStatus = string.Format("{0}({1})", response.StatusCode, (int)response.StatusCode); UpdateCellValue(bd.RowIndex, "HttpStatus", string.Format("{0}({1})", response.StatusCode, (int)response.StatusCode)); UpdateCellValue(bd.RowIndex, "ContentLength", response.ContentLength); } } catch (Exception ex) { UpdateCellValue(bd.RowIndex, "HttpStatus", ex.Message); } } this.m_WorkStatus++; }
void ProcessUrls(object p) { IList <BaiDuResultInfo> resultList = new List <BaiDuResultInfo>(); int index = 1; string[] pas = p as string[]; string urls = pas[0]; string scanClass = pas[1]; //string[] urlList = urls.Split(new string[] { "\r\n" }, StringSplitOptions.RemoveEmptyEntries); //foreach (string url in urlList) //{ BaiDuResultInfo bdri = new BaiDuResultInfo(); bdri.ID = index++; // bdri.Title = m.Groups[2].Value.Trim(); bdri.Url = urls; // bdri.IP = GetIPAddress(bdri.Url); // bdri.Type = BaiDuResultInfo.ResultType.推广; bdri.RowIndex = rowIndex++; resultList.Add(bdri); ResolveIPAddress(resultList, scanClass); // } lastDomain = bdri.Url; this.m_WorkStatus++; m_DataSource = resultList; BindData(resultList); //Thread pingThread = new Thread(new ParameterizedThreadStart(PingServer)); //pingThread.IsBackground = true; //pingThread.Start(resultList); MultiHttpGet(resultList); }
//void PingServer(object p) //{ // // ts_StatusLabel.Text = "正在Connect服务器..."; // IList<BaiDuResultInfo> resultList = p as IList<BaiDuResultInfo>; // foreach (BaiDuResultInfo bd in resultList) // { // Socket socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); // try // { // if (bd.IP!=null && bd.IP != "未知") // socket.Connect(IPAddress.Parse(bd.IP), 80); // else if(!string.IsNullOrEmpty(bd.Url)) // socket.Connect(bd.Url, 80); // bd.IsAlive = socket.Connected; // } // catch // { // bd.IsAlive = false; // } // finally { // socket.Close(); // } // UpdateCellValue(bd.RowIndex, "IsAlive", bd.AliveImage); // } // m_WorkStatus++; //} void PingServer(object p) { int[] range = p as int[]; int startIndex = range[0]; int endIndex = range[1]; for (; startIndex < endIndex; startIndex++) { BaiDuResultInfo bd = this.m_DataSource[startIndex]; Socket socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); try { if (bd.IP != null && bd.IP != "未知") { socket.Connect(IPAddress.Parse(bd.IP), 80); } else if (!string.IsNullOrEmpty(bd.Url)) { socket.Connect(bd.Url, 80); } bd.IsAlive = socket.Connected; } catch { bd.IsAlive = false; } finally { socket.Close(); } UpdateCellValue(bd.RowIndex, "IsAlive", bd.AliveImage); } this.m_WorkStatus++; }
private void ResolveIPAddress(IList<BaiDuResultInfo> resultList, string scanClass) { try { BaiDuResultInfo origin = resultList[resultList.Count-1]; IPAddress[] ips = Dns.GetHostAddresses(origin.Domain); if (ips.Length == 0) resultList[resultList.Count - 1].IP = "未知"; else if (ips.Length == 1) {//单IP resultList[resultList.Count - 1].IP = ips[0].ToString(); AppendClass(resultList, scanClass); } else { resultList[resultList.Count - 1].IP = ips[0].ToString(); AppendClass(resultList, scanClass); string lastIp = origin.IP; for (int i = 1; i < ips.Length; i++) { //同段的IP忽略 if (!IsSameClass(lastIp, ips[i].ToString(), scanClass)) { BaiDuResultInfo bdri = new BaiDuResultInfo(); bdri.ID = origin.ID; bdri.Title = ""; bdri.Url = ""; bdri.IP = ips[i].ToString(); bdri.RowIndex = rowIndex++; resultList.Add(bdri); AppendClass(resultList, scanClass); lastIp = bdri.IP; } } } } catch { resultList[resultList.Count - 1].IP = "未知"; } }
void ProcessUrls(object p) { IList<BaiDuResultInfo> resultList = new List<BaiDuResultInfo>(); int index = 1; string[] pas = p as string[]; string urls = pas[0]; string scanClass = pas[1]; //string[] urlList = urls.Split(new string[] { "\r\n" }, StringSplitOptions.RemoveEmptyEntries); //foreach (string url in urlList) //{ BaiDuResultInfo bdri = new BaiDuResultInfo(); bdri.ID = index++; // bdri.Title = m.Groups[2].Value.Trim(); bdri.Url = urls; // bdri.IP = GetIPAddress(bdri.Url); // bdri.Type = BaiDuResultInfo.ResultType.推广; bdri.RowIndex = rowIndex++; resultList.Add(bdri); ResolveIPAddress(resultList, scanClass); // } lastDomain = bdri.Url; this.m_WorkStatus++; m_DataSource = resultList; BindData(resultList); //Thread pingThread = new Thread(new ParameterizedThreadStart(PingServer)); //pingThread.IsBackground = true; //pingThread.Start(resultList); MultiHttpGet(resultList); }