为什么我的HttpWebRequest返回503?

时间:2018-03-19 22:52:59

标签: c# .net httpwebrequest httpwebresponse

所以我只是学习HttpWebRequests及其功能。 我已经到了想要学习如何在CookieContainer中捕获cookie并通过它们进行解析的地步。

问题是有些网站返回503错误,我不确定。 其中一个网站将用于此示例。 从我在线阅读的内容中可以看出503错误。

  

超文本传输​​协议(HTTP)503服务不可用服务器   错误响应代码表示服务器尚未准备好处理   请求。

     

常见原因是服务器因维护而停机或是   超载。此响应应用于临时条件和   如果可能,Retry-After HTTP标头应包含估计值   恢复服务的时间。

自从网站启动并运行以来,它似乎根本不适合。 为什么我的请求返回503状态代码,我该怎么做才能以适当的方式解决这个问题?

static void Main(string[] args)
        {

            //1. Create a HTTP REQUEST

            //Build the request
            Uri site = new Uri("https://ucp.nordvpn.com/login/");

            //Inizializing a new instance of the HttpWebRequest and casting it as a WebRequest
            //And calling the Create function and using our site as a paramter which the Create function takes.
            HttpWebRequest request = (HttpWebRequest)WebRequest.Create(site);

            //Inizialize a new instance of the CookieContainer
            CookieContainer cookies = new CookieContainer();

            //The request has a CookieContainer, which is null by default, so we are just assinging the newly inizialized instance
            //of our CookieContainer to our requests CookieContainer
            request.CookieContainer = cookies;

            //Print out the number of cookies before the response (of course it will be blank)
            Console.WriteLine(cookies.GetCookieHeader(site));

            //Get the response and print out the cookies again
            using (HttpWebResponse response = (HttpWebResponse)request.GetResponse())
            {
                Console.WriteLine(cookies.GetCookieHeader(site));
            }

            Console.ReadKey();
        }

2 个答案:

答案 0 :(得分:0)

您尝试访问的网址似乎受CloudFlare保护。您无法在不需要额外工作的情况下将基本HttpWebRequest用于此类请求。虽然我没有试过这个,但是你可以选择绕过这种保护: CloudFlareUtilities

答案 1 :(得分:0)

您尝试访问的网址是使用云托管,该托管使用许多安全措施,包括哪些浏览器正在访问该网站

要使其工作,您需要更改HttpWebRequest的userAgent属性

request.UserAgent =“Mozilla / 5.0(Windows NT 6.1; Win64; x64; rv:59.0)Gecko / 20100101 Firefox / 59.0”;