我正在尝试登录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
什么可能导致这些标题不出现?
答案 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]
已设置。