¿Cómo se haría? Proxy grabber [C#]

Iniciado por nevachana, 8 Febrero 2015, 15:36 PM

0 Miembros y 1 Visitante están viendo este tema.

nevachana

Un proxy grabber para hidemyass en c# por ejemplo?
Había pensado en obtener el elementbyid usando un webbrowser y luego filtrarlo,pero resulta que este varía siempre.
Y luego,si uso httpwebrequest me dice que uso caracteres no válidos ._.
alguna idea?
Pd: había encontrado esto en google:
 
Código (csharp) [Seleccionar]
 static void Main(string[] args)
       {
           Program h = new Program();
           h.parse(h.Download());
           Console.ReadKey();
       }
       public HtmlDocument Download()
       {
           string result = string.Empty;
           HttpWebRequest req = (HttpWebRequest)WebRequest.Create("http://hidemyass.com/proxy-list/");
           req.Method = "GET";
           HttpWebResponse resp = (HttpWebResponse)req.GetResponse();
           Stream stream = resp.GetResponseStream();
           using (var reader = new StreamReader(stream, Encoding.UTF8))
           {
               result = reader.ReadToEnd();
               HtmlDocument doc = new HtmlAgilityPack.HtmlDocument();
               doc.Load(new StringReader(result));
               return doc;
           }
       }
       public void parse(HtmlDocument doc)
       {
           string source = doc.DocumentNode.InnerHtml;
           foreach (Match m in Regex.Matches(source, @"<td><span>([\s\S]*?)(\d+)</td>"))
           {
               string port = m.Groups[2].Value;
               string ip = m.Groups[1].Value;
               HtmlDocument htm = new HtmlDocument();
               htm.Load(ip);
               HtmlNode style = htm.DocumentNode.SelectSingleNode("style");
               List<string> all = style.InnerText.Split('.').ToList();
               string ip2 = ip;
               foreach (string line in all)
               {
                   if (line.Length != 1 && line.Contains("display:none"))
                   {
                       string parse = line.Substring(0, line.IndexOf("{"));
                       string parse2 = string.Format(@"<psn class=""{0}"">(.*?)</span", parse);
                       ip2 = Regex.Replace(ip2, parse2, "").Trim();
                   }
                   ip2 = ip2.Replace("." + line, "");
               }
               ip2 = Regex.Replace(ip2, @"(<div|span) style=""display:none"">\d+.*?>\<.*?>)", "").Trim();
               Console.WriteLine(string.Format("Ip: {0} Port: {1} ", ip2, port));

           }
       }
 
   }
}

Pero no va , alguna idea de cómo hacerlo?

3n31ch

#1
Amigo, por favor pon las etiquetas Code.

Modifica tu mensaje, selecciona el código y en donde dice GeSHi, pon C#.

De esta manera tu código sera mas atendible y te podremos ayudar. También te recomiendo poner un titulo mas descriptivo a tu tema, de esta manera ingresara gente que pueda ayudarte. (Yo entre aquí intentando ayudarte y me encuentro con que no tengo idea de lo que quieres :-X)

Las reglas del foro estan por algo  :P

Eleкtro

#2
Código (div) [Seleccionar]
</style><span class="VUaZ">212</span><span style="display: inline">.</span><span style="display: inline">12</span><span class="KPFX">67</span><div style="display:none">67</div><span style="display:none">170</span><span class="KPFX">189</span><span></span><span style="display:none">199</span><span class="KPFX">199</span><span></span><span class="KPFX">223</span><div style="display:none">223</div><span class="218">.</span><span class="64">12</span><span style="display:none">77</span><span class="KPFX">77</span><div style="display:none">77</div><span></span><span style="display:none">126</span><div style="display:none">126</div><span class="KPFX">165</span><div style="display:none">165</div><span style="display:none">193</span><span class="KPFX">193</span><span></span><span style="display:none">243</span><span class="KPFX">243</span><span></span><span style="display: inline">.</span><span class="217">163</span></span>

El código de arriba contiene la IP '212.12.12.163' separada en varios segmentos que utilizan nombres al azahar para mostrar los números (y los puntos delimitadores, por separado), a veces son nombres alfabéticos y otras veces numéricos, y la misma técnica de aletoriedad se puede apreciar que se utiliza para añadir otra información irrelevante (para despistar y así dificultar o imposibilitar la ingeniería inversa, me imagino), aparte de los campos <div style="display:none"> que siempre son basura.

Es el código fuente más tedioso que he visto para hacerle web-scrapping, aunque por otro lado, lo mio no es la programación a nivel web como para poder analizar la situación a la perfección.

Mi opinión tras un vistazo rápido es que ni merece la pena intentar desarrollar el algoritmo de filtración de datos (¿he mencionado ya que los nombres son al azahar?), prueba con otra página, hay miles de servicios de proxylist gratuitos (y mejores que ese).

Saludos!








nevachana

Cita de: Eleкtro en 11 Febrero 2015, 14:59 PM
Código (div) [Seleccionar]
</style><span class="VUaZ">212</span><span style="display: inline">.</span><span style="display: inline">12</span><span class="KPFX">67</span><div style="display:none">67</div><span style="display:none">170</span><span class="KPFX">189</span><span></span><span style="display:none">199</span><span class="KPFX">199</span><span></span><span class="KPFX">223</span><div style="display:none">223</div><span class="218">.</span><span class="64">12</span><span style="display:none">77</span><span class="KPFX">77</span><div style="display:none">77</div><span></span><span style="display:none">126</span><div style="display:none">126</div><span class="KPFX">165</span><div style="display:none">165</div><span style="display:none">193</span><span class="KPFX">193</span><span></span><span style="display:none">243</span><span class="KPFX">243</span><span></span><span style="display: inline">.</span><span class="217">163</span></span>

El código de arriba contiene la IP '212.12.12.163' separada en varios segmentos que utilizan nombres al azahar para mostrar los números (y los puntos delimitadores, por separado), a veces son nombres alfabéticos y otras veces numéricos, y la misma técnica de aletoriedad se puede apreciar que se utiliza para añadir otra información irrelevante (para despistar y así dificultar o imposibilitar la ingeniería inversa, me imagino), aparte de los campos <div style="display:none"> que siempre son basura.

Es el código fuente más tedioso que he visto para hacerle web-scrapping, aunque por otro lado, lo mio no es la programación a nivel web como para poder analizar la situación a la perfección.

Mi opinión tras un vistazo rápido es que ni merece la pena intentar desarrollar el algoritmo de filtración de datos (¿he mencionado ya que los nombres son al azahar?), prueba con otra página, hay miles de servicios de proxylist gratuitos (y mejores que ese).

Saludos!
Bueno,ya lo hice ^^ me ha salido rentable,los proxys son de muy buena calidad.
Me gustaría postear los resultados,pero he usado php y c#(la parte de php está hecha por un amigo y no quiere que ponga el código),no obstante si alguien tiene dudas o lo que sea que me lo diga y le ayudaré ^^