在c#

时间:2017-07-13 11:35:32

标签: c# asp.net-mvc proxy request instagram

我想通过以下地址向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;

1 个答案:

答案 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();

WebRequestHttpClientHandler本身。

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