tutorial scrapysharp scraping scrap page ironwebscraper iron hacer ejemplos con como c# proxy webclient

scrapysharp - web scraping c# tutorial



C#webclient y servidor proxy (6)

La respuesta propuesta por Jonathan es correcta, pero requiere que especifique las credenciales de proxy y la URL en el código. Por lo general, es mejor permitir el uso de las credenciales como configuración en el sistema de forma predeterminada (los usuarios generalmente configuran la configuración de LAN de todos modos en caso de que utilicen un proxy) ...

Davide proporcionó la siguiente respuesta en una respuesta anterior, pero eso requiere modificar los archivos app.config. Esta solución es probablemente más útil ya que hace lo mismo EN CÓDIGO.

Para permitir que la aplicación use la configuración de proxy predeterminada que se usa en el sistema del usuario, se puede usar el siguiente código:

IWebProxy wp = WebRequest.DefaultWebProxy; wp.Credentials = CredentialCache.DefaultCredentials; wc.Proxy = wp;

Esto permitirá que el código de la aplicación use el proxy (con las credenciales de inicio de sesión y la configuración predeterminada de la URL del proxy) ... ¡Sin problemas! :)

Espero que esto ayude a los futuros espectadores de esta página a resolver su problema!

Estoy usando una clase de cliente web en mi código fuente para descargar una cadena usando http.

Esto estaba funcionando bien. Sin embargo, todos los clientes de la empresa están ahora conectados a un servidor proxy. Y el problema comenzó a partir de esto.

Cuando he probado mi aplicación, no creo que pueda pasar por el servidor proxy, ya que la excepción que sigue apareciendo es "no hay respuesta de xxx.xxx.xxx.xxx, que es la dirección IP del servidor proxy.

Sin embargo, todavía puedo navegar a la URL del sitio web y muestra la cadena correctamente en el navegador cuando se conecta a través de un servidor proxy, pero no cuando uso mi cliente web.

¿Hay algo en el cliente web que deba configurar para que pueda acceder a la url desde un servidor proxy?

using (WebClient wc = new WebClient()) { string strURL = "http://xxxxxxxxxxxxxxxxxxxxxxxx"; //Download only when the webclient is not busy. if (!wc.IsBusy) { string rtn_msg = string.Empty; try { rtn_msg = wc.DownloadString(new Uri(strURL)); return rtn_msg; } catch (WebException ex) { Console.Write(ex.Message); return false; } catch (Exception ex) { Console.Write(ex.Message); return false; } } else { System.Windows.Forms.MessageBox.Show("Busy please try again"); return false; } }


Me he encontrado con el mismo problema, pero al usar un cliente web para descargar un archivo de Internet con una aplicación Winform que la solución estaba agregando en el archivo app.config:

<system.net> <defaultProxy useDefaultCredentials="true" /> </system.net>

La misma solución funcionará para una aplicación asp.net insertando las mismas filas en web.config.

Espero que ayude


Mi solución:

WebClient client = new WebClient(); WebProxy wp = new WebProxy(" proxy server url here"); client.Proxy = wp; string str = client.DownloadString("http://www.google.com");



Si necesita autenticarse en el proxy, debe establecer UseDefaultCredentials en false y establecer las Credentials proxy.

WebProxy proxy = new WebProxy(); proxy.Address = new Uri("mywebproxyserver.com"); proxy.Credentials = new NetworkCredential("usernameHere", "pa****rdHere"); //These can be replaced by user input proxy.UseDefaultCredentials = false; proxy.BypassProxyOnLocal = false; //still use the proxy for local addresses WebClient client = new WebClient(); client.Proxy = proxy; string doc = client.DownloadString("http://www.google.com/");

Si todo lo que necesita es un proxy simple, omite la mayoría de las líneas anteriores. Todo lo que necesitas es:

WebProxy proxy = new WebProxy("mywebproxyserver.com");


byte[] data; using (WebClient client = new WebClient()) { ICredentials cred; cred = new NetworkCredential("[email protected]", "mybestpassword"); client.Proxy = new WebProxy("192.168.0.1",8000); client.Credentials = cred; string myurl="http://mytestsite.com/source.jpg"; data = client.DownloadData(myUrl); } File.WriteAllBytes(@"c:/images/target.jpg", data);