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); }
/// <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 }); }
public Socks5Form(Models.Server server = default) { InitializeComponent(); _server = (Socks5)(server ?? new Socks5()); }
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==&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); }
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); } } }
public Socks5Form(Socks5 server = default) { server ??= new Socks5(); Server = server; }