HttpWebRequest怎么使用SOCKS v5代理

HttpWebRequest如何使用SOCKS v5代理
本帖最后由 gsw945 于 2015-05-09 22:40:01 编辑
在使用HttpWebRequest获取目标页面的源码时,由于需要采用代理,于是就写了浏览器使用的代理
HttpWebRequest怎么使用SOCKS v5代理,
但是,浏览器采用的是SOCKS v5 代理,
效果如图
HttpWebRequest怎么使用SOCKS v5代理
而HttpWebRequest的WebProxy的属性使用的是Http代理——经过一番痛苦的尝试才发现。
关键代码如下

/// <summary>
/// 获取页面源码
/// </summary>
/// <param name="url">页面地址</param>
/// <param name="server">代理服务器地址</param>
/// <param name="port">代理服务器端口</param>
/// <param name="username">代理服务器登录用户名</param>
/// <param name="password">代理服务器登录密码</param>
/// <returns></returns>
public static string GetWebSource(string url, string server, int port, string username, string password)
{
try
{
HttpWebRequest req = (HttpWebRequest)WebRequest.Create(url);
req.Timeout = 1000 * 10;
req.Method = "GET";
#region 设置Http代理
if (string.IsNullOrEmpty(server) == false)
{
WebProxy proxy = new WebProxy(server, port);
if (string.IsNullOrEmpty(username) == false)
{
proxy.Credentials = new NetworkCredential(username, password);
}
req.Proxy = proxy;
}
#endregion
using (HttpWebResponse res = (HttpWebResponse)req.GetResponse())
{
string charSet = res.CharacterSet;
if (string.IsNullOrEmpty(charSet))
{
charSet = "utf-8";
}
using (StreamReader sr = new StreamReader(res.GetResponseStream(), Encoding.GetEncoding(charSet)))
{
string webSource = sr.ReadToEnd();
return webSource;
}
}
}
catch (Exception ex)
{
return ex.Message;
}
}

调用代码如下:
this.richTextBox1.Text = WebDataManager.GetWebSource("http://www.mitbbs.com/pc/pcmain.php", "127.0.0.1", 9150, null, null);

异常如下
HttpWebRequest怎么使用SOCKS v5代理
关键信息“Tor is not an Http Proxy”。
请问,如何让HttpWebRequest使用SOCKS v5代理呢?
------解决思路----------------------
可以参考
http://wenda.io/questions/293920/use-webclient-with-socks-proxy.html
 WebRequest/WebResponse不支持

或者下载一个ProxySocket代码
http://www.mentalis.org/soft/class.qpx?id=9