我想通过以下地址向Instagram发送请求:" https://i.instagram.com" 我想为我发送的每个请求使用代理 哪一个好吗? 和uri("" https://i.instagram.com:8080"")好吗? 如果第二个代码没问题那么什么是 NetworkCredential
IWebProxy Proxya = System.Net.WebRequest.GetSystemWebProxy();
//to get default proxy settings
Proxya.Credentials = CredentialCache.DefaultNetworkCredentials;
Uri targetserver = new Uri("https://i.instagram.com:8080");
Uri proxyserver = Proxya.GetProxy(targetserver);
HttpClientHandler handler = new HttpClientHandler();
handler.Proxy = Proxya;
第二
IWebProxy Proxya = System.Net.WebRequest.GetSystemWebProxy();
//to get default proxy settings
Proxya.Credentials = new NetworkCredential("xxxx", "xxxx");
Uri targetserver = new Uri("https://i.instagram.com:8080");
Uri proxyserver = Proxya.GetProxy(targetserver);
HttpClientHandler handler = new HttpClientHandler();
handler.Proxy = Proxya;
答案 0 :(得分:2)
你必须照顾你想做的事。
现在,您已经告诉您的程序通过GetSystemWebProxy()
获取本地定义的代理服务器。这意味着该程序使用系统代理设置中定义的代理。
之后你在这里告诉程序:
Uri targetserver = new Uri("https://i.instagram.com:8080");
Uri proxyserver = Proxya.GetProxy(targetserver);
您的代理服务器正在监听https://i.instagram.com:8080
。这应该是WebRequest
。
现在Proxya.Credentials = new NetworkCredential("xxxx", "xxxx");
简单说您的代理服务器需要通过用户名和密码进行身份验证。
您的代理服务器是否允许匿名登录?如果是,那么你就不需要了。
但是(!)我不建议提供开放代理。
我建议您将代码分为两部分:
代理服务器代码部分:
在此处定义代理设置:
string proxyAddress = "proxyAddress";
int proxyPort = 1337;
string proxyUser = "user";
string proxyPassword = "password";
IWebProxy proxy = new WebProxy(proxyAddress, proxyPort)
{
Credentials = new NetworkCredential(proxyUser, proxyPassword)
};
或者,如果您不使用代理,则不要定义代理。 如果您使用的是系统设置中定义的代理,那么这就足够了:
IWebProxy proxy = WebRequest.GetSystemWebProxy();
WebRequest
或HttpClientHandler
本身。
string instagramAddress = "https://i.instagram.com:8080";
Uri targetserver = new Uri(instagramAddress);
// HttpClientHandler handler = new HttpClientHandler();
WebRequest request = WebRequest.Create(targetserver);
// handler.Proxy = proxy;
request.Proxy = proxy; //Set the previously defined proxy here