所以我只是学习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();
}
答案 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”;