2016-03-04 73 views
1

我正在尝试登录到Yahoo!使用HttpWebRequest,但我无法获取它们设置的初始cookie。我不确定这是否与我的Request/Response存在问题,如果他们以某种恶意方式设置cookie以阻止此类活动。C#HttpWebResponse没有看到cookies

因此,这里是我的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(); 
     } 
    } 

如果我检查response对象在第30行,我甚至没有看到任何Set-Cookie标题。如果我手动访问同一页面在Chrome中,我看到了下面的头被送回:

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

什么会导致这些头不出现?

+0

@RJK这些日子里有没有关于强迫宫缩的政策? – Cylindric

+0

很酷。绝对没有人。我认为这可能会提高一些可读性。没有改进?不仅收缩,另外我做了一些改进。我不是吗? :) – RajeshKdev

回答

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]设置。

+1

啊,他们根据UA阻止。我会尽力的,谢谢! – Cylindric