Ejemplo n.º 1
0
 public Socks5Form(Socks5 server = default)
 {
     server ??= new Socks5();
     Server = server;
     CreateTextBox("Username", "Username", s => true, s => server.Username = s, server.Username);
     CreateTextBox("Password", "Password", s => true, s => server.Password = s, server.Password);
 }
Ejemplo n.º 2
0
        /// <summary>
        /// Create a TcpClient using a TcpClientType Proxy.
        /// </summary>
        /// <param name="destination">The address destination. Where to CONNECT</param>
        /// <param name="type">The Proxy Type</param>
        /// <param name="userId">A string used with socks 4</param>
        /// <returns></returns>
        public TcpClient CreateTcpClient(SocketAddress destination, TcpClientType type, string userId = "")
        {
            if (destination == null)
            {
                throw new ArgumentNullException(nameof(destination), $"{nameof(destination)} must be not null");
            }

            var socket = new Socket(SocketType.Stream, ProtocolType.Tcp);

            socket.Connect(ProxyAddress.Host, ProxyAddress.Port);

            try
            {
                if (type == TcpClientType.SOCKS4)
                {
                    var socks = new Socks4(Resolver);
                    socks.CreateTunnel(socket, destination, userId);
                }
                else if (type == TcpClientType.SOCKS4a)
                {
                    var socks = new Socks4a(Resolver);
                    socks.CreateTunnel(socket, destination, userId);
                }
                else
                {
                    var socks = new Socks5(Resolver);
                    socks.CreateTunnel(socket, destination, ProxyCredential);
                }
            }
            catch (Exception e)
            {
                if (socket != null && socket.Connected)
                {
                    socket.Close();
                }

                throw e;
            }

            return(new TcpClient()
            {
                Client = socket
            });
        }
Ejemplo n.º 3
0
        public Socks5Form(Models.Server server = default)
        {
            InitializeComponent();

            _server = (Socks5)(server ?? new Socks5());
        }
Ejemplo n.º 4
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);
        }
Ejemplo n.º 5
0
        internal void Connect(ConnectionState State)
        {
            IPAddress[] resolved = Dns.GetHostAddresses(Properties.HostIp);
            string      DnsIp    = "";

            for (int i = 0; i < resolved.Length; i++)
            {
                if (resolved[i].AddressFamily == AddressFamily.InterNetwork)
                {
                    DnsIp = resolved[i].ToString();
                    break;
                }
            }

            if (DnsIp == "")
            {
                throw new Exception("Unable to resolve \"" + Properties.HostIp + "\" by using DNS");
            }

            if (Properties.proxySettings == null)
            {
                do
                {
                    this.Handle = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
                    IAsyncResult result = this.Handle.BeginConnect(new IPEndPoint(resolved[0], Properties.Port), (IAsyncResult ar) =>
                    {
                        try
                        {
                            this.Handle.EndConnect(ar);
                        }
                        catch { /* Will throw a error if connection couldn't be made */ }
                    }, null);

                    Stopwatch sw = Stopwatch.StartNew();
                    if (Properties.ConnectingTimeout > 0)
                    {
                        result.AsyncWaitHandle.WaitOne(Properties.ConnectingTimeout);
                    }
                    else
                    {
                        result.AsyncWaitHandle.WaitOne();
                    }
                    sw.Stop();
                    Properties.ConnectingTimeout -= (int)sw.ElapsedMilliseconds;

                    if (!this.Handle.Connected)
                    {
                        this.Handle.Close();
                    }
                } while (Properties.ConnectingTimeout > 0 && !this.Handle.Connected);

                if (!Handle.Connected)
                {
                    throw new Exception("Unable to establish a connection with " + Properties.HostIp + ":" + Properties.Port);
                }
            }
            else
            {
                //this.Handle = new Socks5ProxyClient(Properties.proxySettings.HostIp, Properties.proxySettings.HostPort).CreateConnection();

                Socks5 socks = new Socks5();
                this.Handle = socks.ConnectToSocks5Proxy(Properties.proxySettings.HostIp, Properties.proxySettings.HostPort, Properties.HostIp, Properties.Port, Properties.proxySettings.Username, Properties.proxySettings.Password);
            }

            this.Connection       = new Connection(this);
            this.Connection.State = ConnectionState.Open;
            decimal oldClientId = this.ClientId;
            decimal oldToken    = this.Token;

            if (!CreateHandshake(Properties.HostIp, Properties.Port, onGetPlugins()))
            {
                throw new Exception("Failed to complete the handshake");
            }

            if (State == ConnectionState.Reconnecting)
            {
                //tell the server this is a re-connection
                Connection.SendPayload(new MsgReconnect(oldClientId, oldToken), PacketId.Reconnection);

                //wait for the server response
            }


            try
            {
                onShareClasses();
            }
            catch (Exception ex)
            {
                onException(ex, ErrorType.UserLand);
            }

            StartReceiver();

            SharedChannel = GetSharedClass <ISharedChannel>("LITECODE_CHANNEL");
            SharedRoot    = GetSharedClass <ISharedRoot>("SHARED_ROOT");

            if (State != ConnectionState.Reconnecting)
            {
                try
                {
                    onClientConnect();
                }
                catch (Exception ex)
                {
                    onException(ex, ErrorType.UserLand);
                }
            }
        }
Ejemplo n.º 6
0
 public Socks5Form(Socks5 server = default)
 {
     server ??= new Socks5();
     Server = server;
 }