Ejemplo n.º 1
0
        private async void StartButton_Click(object sender, EventArgs e)
        {
            //var socksList = Helpers.GetIpEndOfFile(@"E:\ProxyList\socks.txt");
            //var ipWorks = new List<IPEndPoint>();//Helpers.GetIpEndOfFile(@"E:\ProxyList\socksWork.txt");
            //int s5 = 0, s4 = 0;
            //Parallel.ForEach(socksList, s =>
            //{
            //    var zxc = Socks.GetTypeSocks(s);
            //    if (zxc != TypeSocks.Error)
            //    {
            //        ipWorks.Add(s);
            //        if (zxc == TypeSocks.Socks5)
            //            s5++;
            //        if (zxc == TypeSocks.Socks4)
            //            s4++;
            //    }

            //});
            var a   = new AvJs("123123123");
            var tre =
                a.q_a_bb("{\"a\":{\"af\":1382981724491,\"aa\":1,\"ab\":10,\"ac\":9,\"ae\":\"\",\"ad\":\"BYCR5JHJJDRQZK2VPDDQ\",\"ag\":1382371709662,\"ah\":1382981634346,\"cg\":\"SG0978FE8DF36DE98AC942EC221DCD35404566F861\",\"ai\":\"Win32\",\"aj\":\"http://m.avito.ru/pskov/kvartiry\",\"ak\":1},\"b\":[{\"bd\":\"\",\"be\":\"\",\"bk\":-1,\"bl\":0,\"bj\":\"ru\",\"bo\":[],\"bm\":false,\"bn\":{},\"bv\":[],\"bt\":false,\"bu\":{},\"by\":[],\"cd\":0,\"ba\":1382981634346,\"bb\":90145,\"bc\":36612,\"ch\":\"Etc/GMT-4\"}]}");
            //File.WriteAllLines(@"E:\ProxyList\socksWork.txt", ipWorks.Select(x => x.Address + ":" + x.Port));
            AvitoHandler aH = new AvitoHandler();
            var          sa = aH.GetFieldAvito("http://m.avito.ru/sankt-peterburg/avtomobili_s_probegom/toyota_will_2002_227393083");

            Helpers.SaveInOnTypeProxy(@"E:\ProxyList\ipMyFind.txt");
            var         ipRus = File.ReadAllLines(@"E:\ProxyList\GeoipRus1.txt");
            List <long> time  = new List <long>();

            foreach (var str in ipRus)
            {
                var rangeIp = Helpers.GetRangeIpOfStr(str);
                var temp    = rangeIp[0].ToString();
                var temp1   = rangeIp[1].ToString();
                //Перебор {111.111}.111.111 где {p0}.i.j
                var    ip0 = temp.Substring(0, temp.IndexOf(".", temp.IndexOf(".") + 1));
                var    ip1 = temp1.Substring(0, temp1.IndexOf(".", temp1.IndexOf(".") + 1));
                int    iEnd, iBegin, zBegin = 0, zEnd = 1;
                string one = rangeIp[0].ToString().Substring(0, temp.IndexOf("."));
                if (ip0.Equals(ip1))
                {
                    temp = temp.Replace(ip0 + ".", "");
                    var iStr = temp.Substring(0, temp.IndexOf("."));
                    iBegin = Convert.ToInt32(iStr);
                    temp1  = temp1.Replace(ip0 + ".", "");
                    iStr   = temp1.Substring(0, temp1.IndexOf("."));
                    iEnd   = Convert.ToInt32(iStr);
                }
                else
                {
                    //111.{p0}.111.111
                    ip0    = temp.Substring(temp.IndexOf(".") + 1, temp.IndexOf(".", temp.IndexOf(".")));
                    ip1    = temp1.Substring(temp1.IndexOf(".") + 1, temp1.IndexOf(".", temp1.IndexOf(".")));
                    zBegin = Convert.ToInt32(ip0);
                    zEnd   = Convert.ToInt32(ip1);
                    temp   = temp.Replace(temp.Substring(0, temp.IndexOf(".", temp.IndexOf(".") + 1)) + ".", "");
                    var iStr = temp.Substring(0, temp.IndexOf("."));
                    iBegin = Convert.ToInt32(iStr);
                    temp1  = temp1.Replace(temp1.Substring(0, temp1.IndexOf(".", temp1.IndexOf(".") + 1)) + ".", "");
                    iStr   = temp1.Substring(0, temp1.IndexOf("."));
                    iEnd   = Convert.ToInt32(iStr);
                }

                var st  = new Stopwatch();
                var sad = new List <string>();
                sad.Add("--------------------------------------------------------------------------------------------------");
                sad.Add("-----------------" + str + " - " + rangeIp[0].ToString() + ":" + rangeIp[1].ToString() + "----------");
                sad.Add("--------------------------------------------------------------------------------------------------");
                st.Start();
                int zx = 0;
                for (int z = zBegin; z <= zEnd; z++)
                {
                    List <string> p1080 = new List <string>();
                    Parallel.For(iBegin, iEnd + 1, /* new ParallelOptions() {MaxDegreeOfParallelism = 10},*/ i =>
                    {
                        string ipStr = string.Empty;
                        if (zEnd == 1)
                        {
                            ipStr = string.Format("{0}.{1}.0-255", ip0, i);
                        }
                        else
                        {
                            ipStr = string.Format("{0}.{1}.{2}.0-255", one, z, i);
                        }
                        var res = SearchProxy.GetOpenProxyPorts(ipStr);
                        zx++;
                        if (res.Contains("open"))
                        {
                            sad.Add(res);
                        }
                        if (res.Contains("1080"))
                        {
                            p1080.Add(res);
                        }
                    });
                    File.AppendAllLines(@"E:\ProxyList\ScanSocks.txt", p1080);
                    if (zEnd == 1)
                    {
                        break;
                    }
                }
                st.Stop();
                sad.Add("------------------------------------------------------------------------------------------");
                File.AppendAllLines(@"E:\ProxyList\Scan.txt", sad);
                time.Add(st.ElapsedMilliseconds);
            }



            var pathProxyList = @"E:\ProxyList\proxy.txt";

            Proxy.FormattingProxyFile(@"E:\ProxyList\ProxyListWhiteSpace.txt", pathProxyList);
            var proxyList = Proxy.ReadIpList(pathProxyList);
            var error400s = new List <string>();

            string[] headerProxies = { "x-via",       "cdn-src-ip",   "x-bluecoat-via",
                                       "mt-proxy-id", "x-real-ip",    "x-proxy-id",    "x-forwarded-for", "via"
                                       ,              "max-forwards", "x-via",         "x-forwarded-server", "x-forwarded-host" };
            if (proxyList != null && proxyList.Any())
            {
                var myIp   = Proxy.GetIp(null);
                var ipWork = new List <IpAdr>();
                Parallel.ForEach(proxyList, s =>
                {
                    var adr   = s.Trim();
                    var endIp = adr.IndexOf(":");
                    if (endIp < 1)
                    {
                        endIp = adr.IndexOf(" ");
                    }

                    string ip = adr.Substring(0, endIp);
                    int port  = Int32.Parse(adr.Substring(endIp + 1));
                    var proxy = new Proxy(new WebProxy(ip, port));
                    if (proxy.IsPing(ip))
                    {
                        var send = proxy.SocketSendHttp();
                        if (!string.IsNullOrEmpty(send))
                        {
                            var status = send.Substring(9, 3);
                            if (status.Substring(0, 1) == "2")
                            {
                                var ipProxy = proxy.GetIp();

                                if (!ipProxy.Equals(""))
                                {
                                    var countryName = proxy.GetGeolocation();
                                    bool visible    = ipProxy.Equals(myIp);
                                    var ipSecurity  = IpSecurity.Transparent;
                                    if (!visible)
                                    {
                                        if (!ipProxy.Equals(ip))
                                        {
                                            ipProxy = ip;
                                        }
                                        foreach (var header in headerProxies)
                                        {
                                            if (send.IndexOf(header) > 0)
                                            {
                                                ipSecurity = IpSecurity.Anonymous;
                                                break;
                                            }
                                        }
                                        if (ipSecurity == IpSecurity.Transparent)
                                        {
                                            ipSecurity = IpSecurity.Elite;
                                        }
                                    }
                                    ipWork.Add(new IpAdr()
                                    {
                                        Ip       = ip,
                                        Port     = port,
                                        Security = ipSecurity,
                                        TimePing = proxy.TimePing,
                                        Country  = countryName
                                    });
                                }
                            }
                            else if (status.Equals("400"))
                            {
                                error400s.Add(ip + ":" + port.ToString());
                            }
                        }
                    }
                });
                File.WriteAllLines(@"E:\ProxyList\proxyElite.txt", ipWork.Where(x => x.Security == IpSecurity.Elite).Select(x => x.Ip + ":" + x.Port));
                File.WriteAllLines(@"E:\ProxyList\proxy.txt", ipWork.Select(x => x.Ip + ":" + x.Port));
                File.WriteAllLines(@"E:\ProxyList\proxyError400.txt", error400s);
                WriteCSV(ipWork, @"E:\ProxyList\proxy.csv");
            }
            var ret = 0;
        }
Ejemplo n.º 2
0
        public Avito GetFieldAvito(string link)
        {
            if (link == null)
            {
                throw new NullReferenceException();
            }
            var    ipWorks  = Helpers.GetIpEndOfFile(@"E:\ProxyList\socksWork.txt");
            Socks5 socks    = null;
            var    response = string.Empty;

            foreach (var sock in ipWorks)
            {
                Socks5 temp = new Socks5(sock);
                if (temp.Connect("m.avito.ru"))
                {
                    response = temp.GetResponse(link);
                    if (response.Contains("200 OK"))
                    {
                        socks = temp;
                        break;
                    }
                }
            }
            if (socks != null)
            {
                var cookie = GetCookie(response);
                var html   = new HtmlDocument();
                html.LoadHtml(response);
                var title =
                    html.DocumentNode.SelectNodes("//h2[contains(concat(' ', @class, ' '), ' m_item_title ')]")
                    .First()
                    .InnerText;
                var sdfas = html.DocumentNode.SelectNodes("//p[contains(concat(' ', @class, ' '), ' m_item_date ')]")
                            .First();
                var date = sdfas.InnerText;
                if (date.Contains("Сегодня"))
                {
                    var i = date.IndexOf("Сегодня в ");
                    date = date.Remove(i, i + 10);
                    var now = DateTime.Now.ToString("dd-MMMM");
                    date = now + ", " + date;
                }
                else if (date.Contains("Вчера"))
                {
                    var i = date.IndexOf("Вчера в ");
                    date = date.Remove(i, i + 8);
                    var now = DateTime.Now.AddDays(-1).ToString("dd-MMMM");
                    date = now + ", " + date;
                }

                var ul      = html.DocumentNode.SelectNodes("//ul[contains(concat(' ', @class, ' '), ' list ')]").First();
                var price   = string.Empty;
                var name    = string.Empty;
                var name2   = string.Empty;
                var city    = string.Empty;
                var email   = string.Empty;
                var section = string.Empty;
                foreach (var childNode in ul.ChildNodes)
                {
                    if (childNode.InnerText.Contains("Цена"))
                    {
                        price = childNode.InnerHtml;
                        //Вытаскиваем только цифры из строки
                        price = string.Join("", price.Where(Char.IsDigit).Select(x => x.ToString()));
                    }
                    else if (childNode.InnerText.Contains("Продавец"))
                    {
                        name = childNode.InnerHtml;
                        name = name.Remove(0, name.IndexOf("</strong>") + 9).Trim();
                        if (!string.IsNullOrEmpty(name2))
                        {
                            name = name2 + "(" + name + ")";
                        }
                    }
                    else if (childNode.InnerText.Contains("Контактное лицо"))
                    {
                        name2 = childNode.InnerHtml;
                        name2 = name2.Remove(0, name2.IndexOf("</strong>") + 9).Trim();
                        if (!string.IsNullOrEmpty(name))
                        {
                            name = name2 + "(" + name + ")";
                        }
                    }
                    else if (childNode.InnerText.Contains("Город"))
                    {
                        city = childNode.InnerHtml;
                        city = city.Remove(0, city.IndexOf("</strong>") + 9).Trim();
                    }
                    else if (childNode.InnerText.Contains("Email"))
                    {
                        email = childNode.InnerHtml;
                    }
                    else if (childNode.InnerText.Contains("Категория"))
                    {
                        section = childNode.InnerHtml;
                        section = section.Remove(0, section.IndexOf("</strong>") + 9).Trim();
                    }
                }

                var description =
                    ul.SelectNodes("//li[contains(concat(' ', @class, ' '), ' m_item_desc ')]").First().InnerText;
                var sort = string.Empty;
                //<div class="custom_params">дизельный двигатель, полный привод, внедорожник, есть в наличии </div>
                var divs = ul.SelectNodes("//div[contains(concat(' ', @class, ' '), ' custom_params ')]");
                foreach (var div in divs)
                {
                    sort += " " + div.InnerText.Trim();
                }
                sort = sort.Trim();


                var ulInfo =
                    html.DocumentNode.SelectNodes("//ul[contains(concat(' ', @class, ' '), ' list-info ')]").First();
                var id        = string.Empty;
                var countShow = string.Empty;
                foreach (var childNode in ulInfo.ChildNodes)
                {
                    if (childNode.InnerText.Contains("Номер"))
                    {
                        id = childNode.InnerHtml;
                        id = id.Remove(0, id.IndexOf("ия:") + 3).Trim();
                    }
                    else if (childNode.InnerText.Contains("Просмотры"))
                    {
                        countShow = childNode.InnerHtml;
                        countShow = countShow.Remove(countShow.IndexOf(",")).Trim();
                        countShow = string.Join("", countShow.Where(Char.IsDigit).Select(x => x.ToString()));
                    }
                }

                var phoneUrl =
                    ul.SelectNodes("//a[contains(concat(' ', @id, ' '), ' showPhoneBtn ')]").First().Attributes["href"]
                    .Value;
                phoneUrl = "http://m.avito.ru" + phoneUrl + "?async";

                //<script type="text/javascript" async="" src="https://data.flurry.com/aah.do?d=eyJhIjp7ImFmIjoxMzg0Mjg1MzQxNjU2LCJhYSI6MSwiYWIiOjEwLCJhYyI6OSwiYWUiOiJtb2JpbGUiLCJhZCI6IkJZQ1I1SkhKSkRSUVpLMlZQRERRIiwiYWciOjEzODIzNzE3MDk2NjIsImFoIjoxMzg0Mjg1MTE4MDI0LCJjZyI6IlNHMDk3OEZFOERGMzZERTk4QUM5NDJFQzIyMURDRDM1NDA0NTY2Rjg2MSIsImFpIjoiV2luMzIiLCJhaiI6Imh0dHA6Ly9tLmF2aXRvLnJ1L3Bza292L2t2YXJ0aXJ5IiwiYWsiOjF9LCJiIjpbeyJiZCI6Im1vYmlsZSIsImJlIjoiIiwiYmsiOi0xLCJibCI6MCwiYmoiOiJydSIsImJvIjpbXSwiYm0iOmZhbHNlLCJibiI6e30sImJ2IjpbXSwiYnQiOmZhbHNlLCJidSI6e30sImJ5IjpbXSwiY2QiOjAsImJhIjoxMzg0Mjg1MTE4MDI0LCJiYiI6MjI3MDQyLCJiYyI6LTEsImNoIjoiRXRjL0dNVC00In1dfQ==&amp;c=4035538312"></script>
                //FlurryAgent.startSession("BYCR5JHJJDRQZK2VPDDQ");
                string allHtml  = html.DocumentNode.SelectNodes("//body").First().InnerHtml;
                var    beginKey = allHtml.IndexOf("startSession") + 14;
                var    endKey   = allHtml.IndexOf(");", beginKey + 3) - 1;
                var    key      = allHtml.Substring(beginKey, endKey - beginKey);
                AvJs   avJs     = new AvJs(key, cookie, link);
                var    valJs    = avJs.GetLinkAndCoockie();
                var    phoneReq = socks.GetResponse(phoneUrl, refererLink: link, cookie: cookie);
                var    phone    = GetPhone(phoneUrl, cookie);
                Avito  avito    = new Avito()
                {
                    Id          = id,
                    City        = city,
                    CountShow   = countShow,
                    Description = description,
                    NameContact = name,
                    Date        = date,
                    Title       = title,
                    Url         = link,
                    Phone       = phone,
                    Address     = ""
                };
                return(avito);
            }
            else
            {
                throw new SocketException();
            }
            return(null);
        }