使用代理访问https网站时出现Httpwebrequest错误403#

时间:2016-09-12 08:50:47

标签: c# ssl https proxy httpwebrequest

这是我的代码:

HttpWebRequest firstRequest = (HttpWebRequest)HttpWebRequest.Create("http://opizo.com/OEdwHe");
firstRequest.CookieContainer = new CookieContainer();
firstRequest.Method = "GET";
firstRequest.UserAgent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:48.0) Gecko/20100101 Firefox/48.0";

WebProxy tempProxy = new WebProxy(Proxy+':'+ ProxyPort  /*"127.0.0.1:8888"*/);
tempProxy.BypassProxyOnLocal = false;
tempProxy.UseDefaultCredentials = true;

firstRequest.Accept = "text/html";
firstRequest.UseDefaultCredentials = true;
firstRequest.Credentials = System.Net.CredentialCache.DefaultCredentials;
firstRequest.Proxy = tempProxy;
firstRequest.Timeout = 20000;
WebResponse firstResponse = firstRequest.GetResponse();
System.IO.Stream firstStream = firstResponse.GetResponseStream();
StreamReader firstStreamReader = new StreamReader(firstStream);
string data = firstStreamReader.ReadToEnd();

我要连接的链接是https,但我以http格式输入。 代理创建中的Proxy + ProxyPort是代理列表。 错误发生在WebResponse firstResponse = firstRequest.GetResponse(); 线。 例外是"远程服务器返回错误:(403)禁止。" 有时当我使用ssl代理时,"操作已超时"抛出异常,很少会抛出异常但它的概率是千分之一。

更新:我删除了这两行

firstRequest.UseDefaultCredentials = true;
firstRequest.Credentials = System.Net.CredentialCache.DefaultCredentials;

并且错误403的概率从99%变为1%。 现在例外"操作已经超时"扔了。

更新2:403错误返回。 我认为没有办法在C#中使用http代理连接到https站点,解决问题的最佳方法是使用SOCKS库。

0 个答案:

没有答案