C#HttpWebResponse没有看到cookie

时间:2016-03-04 12:18:14

标签: c# cookies

我正在尝试登录Yahoo!使用HttpWebRequest,但我无法获取他们设置的初始cookie。我不确定这是Request/Response的问题,如果他们以某种邪恶的方式设置cookie来阻止这种活动。

所以这是我的Connect()方法的第一部分,首先只需获取登录页面,因此我获得了身份验证隐藏字段和Cookie:

    public void Connect()
    {
        var LoginUrl = "https://login.yahoo.com/config/login";
        var cookieContainer = new CookieContainer();

        // First get a login page to grab some important values
        var request = WebRequest.Create(LoginUrl) as HttpWebRequest;
        request.Method = "GET";
        request.CookieContainer = cookieContainer;
        Console.WriteLine(request.SupportsCookieContainer);
        var response = request.GetResponse() as HttpWebResponse; /* LINE:30 */
        var loginPageText = string.Empty;
        using (var reader = new StreamReader(response.GetResponseStream()))
        {
            loginPageText = reader.ReadToEnd();
        }
    }

如果我在第30行检查response对象,我甚至看不到任何Set-Cookie标题。如果我在Chrome中手动访问同一页面,我会看到以下标题被发回:

Set-Cookie:B=bgg40ppbditpf&b=3&s=4s; expires=Mon, 05-Mar-2018 11:53:19 GMT; path=/; domain=.yahoo.com

什么可能导致这些标题不出现?

1 个答案:

答案 0 :(得分:1)

我也看不到任何cookie,但如果我伪造成浏览器:

request.UserAgent = "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.75 Safari/537.36";

response.Cookies[0]已设置。