Beispiel #1
0
        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 = "未知";
            }
        }
Beispiel #2
0
        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);
                    }
                }
            }
        }
Beispiel #3
0
        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);

                    }
                }

            }
        }
Beispiel #4
0
        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++;
        }
Beispiel #5
0
        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);
        }
Beispiel #6
0
        //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++;
        }
Beispiel #7
0
        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 = "未知";
            }
        }
Beispiel #8
0
        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);
        }