2010-10-04 22 views
10

De acuerdo con mi investigación mientras trataba de resolver el problema this, resulta que la clase .Net WebProxy no admite los proxis de Socks - un poco molesto. Tampoco puedo encontrar ningún código o información que explique cómo implementar el soporte de Socks 4/5 a través de una clase que se puede usar fácilmente con HttpWebRequest (la propiedad Proxy, para ser exactos).Socks Proxy para HttpWebRequest

He encontrado información limitada a través de google sobre cómo podría hacer esto. One suggestion implica cambiar la configuración proxy de Internet Explorer, algo que preferiría no hacer.

¿Alguien sabe de algo que podría hacer el trabajo o tiene alguna sugerencia? Cualquier ayuda sería muy apreciada.

Respuesta

3

Probé numerosas bibliotecas .Net que afirmaban admitir Socks4/5, pero encontré que muchas de ellas simplemente no funcionaban o error al tratar de conectarme a los proxies que sabía que estaban funcionando.

He terminado usando Chilkat Software's Sock/SSL component que parece funcionar bien para mí, incluso si tengo que construir manualmente las solicitudes HTTP en lugar de utilizar HttpWebRequest como me hubiera gustado.

  • Nota de actualización: Chilkat.Http (similar a la clase HttpWebRequest) sí tiene soporte para proxies SOCKS. Así que no pierdas el tiempo tratando de codificar tus propias solicitudes HTTP como lo hice; solo use las propiedades Chilkat.Http.SocksHostname, Chilkat.Http.SocksPort y Chilkat.Http.SocksVersion.
+0

Chilkat ahora es inherentemente compatible con SOCKS. 'Chilkat.Http.SocksVersion',' Chilkat.Http.SocksHostname', 'Chilkat.Http.SocksPort'. La configuración de esas propiedades obligará a las conexiones HTTP a utilizar SOCKS. Referencia de Chilkat API: [link] (http://www.chilkatsoft.com/refdoc/csHttpRef.html) – user1111380

2

Cambiar la configuración de proxy de IE no te servirá de nada ... el otro cartel solo estaba observando que funciona para IE. Como .NET Framework no es compatible con SOCKS, debe escribir su propio proxy CERN en el convertidor SOCKS-Proxy, de modo que .NET converse con el proxy CERN (el tipo que admite) y su código lo convierte en un Llamada de proxy SOCKS.

FWIW, esto es algo que actualmente estoy buscando agregar a FiddlerCore (www.fiddler2.com/core) porque ya tengo casi todo el código. Lo único que realmente necesito es un proxy SOCKSv4a para probar.

+0

La sugerencia de que me consiguió para esa página era cambiar el proxy de IE y luego usar la propiedad WebProxy.DefaultProxy - http://social.msdn.microsoft.com/Forums/en-US/ncl/thread/982bef6c-b9a4-4c0d-b7d5-0c64df9f610a. Me sorprende que no pueda encontrar ninguna clase/biblioteca para implementar esto fácilmente a través del código, parece algo tan obvio que quiero hacer. Sería grandioso si lo implementaras; estaré atento al proyecto FiddlerCore. – JoeR