【问题标题】:C# web server doesn't see stored cookiesC# Web 服务器看不到存储的 cookie
【发布时间】:2012-03-07 21:41:21
【问题描述】:

我正在编写一个 C# 代码的小测试 sn-p,它可以登录 Facebook 并捕获 cookie。我这样做只是为了教育目的。我的任务是在我的工作和第三方之间自动上传、下载和提交表单,这是我必须做好的事情之一,而且我必须在第一时间就做好;这就是为什么我想我会在 Facebook 和其他一些网络服务上做一些练习。

我有:

string postMessage = "user=" + username + "&pass=" + password;
CookieContainer cookieJar = new CookieContainer();
MessageBox.Show(cookieJar.Count + " cookies"); // 0 cookies, as expected.

HttpWebRequest wReq
 = (HttpWebRequest)HttpWebRequest.Create("https://www.facebook.com/login.php");
wReq.Proxy             = HttpWebRequest.GetSystemWebProxy();
wReq.Proxy.Credentials = CredentialCache.DefaultCredentials;
wReq.UserAgent
  = "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/534.24 "
  + "(KHTML, like Gecko) Chrome/11.0.696.65 Safari/534.24";
wReq.CookieContainer   = cookieJar;
wReq.Method            = "POST";
wReq.ContentLength     = postMessage.Length;
wReq.ContentType       = "application/x-www-form-urlencoded";

StreamWriter sw = null;

try
{
    sw = new StreamWriter(wReq.GetRequestStream());
    sw.Write(postMessage);
}
catch
{
    return false;
}
finally
{
    sw.Close();
}

string result = string.Empty;

HttpWebResponse wResp  = (HttpWebResponse)wReq.GetResponse();
using (StreamReader sr = new StreamReader(wResp.GetResponseStream()))
{
    result = sr.ReadToEnd();
    sr.Close(); // BREAKPOINT 1
}

MessageBox.Show(cookieJar.Count + " cookies"); // 6 cookies.

wReq
  = (HttpWebRequest)HttpWebRequest.Create("http://www.facebook.com/home.php");
wReq.Proxy = HttpWebRequest.GetSystemWebProxy();
wReq.Proxy.Credentials = CredentialCache.DefaultCredentials;
wReq.UserAgent = "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/534.24 "
  + "(KHTML, like Gecko) Chrome/11.0.696.65 Safari/534.24";
wReq.CookieContainer = cookieJar;

result = string.Empty;

wResp = (HttpWebResponse)wReq.GetResponse();
using (StreamReader sr = new StreamReader(wResp.GetResponseStream()))
{
    result = sr.ReadToEnd();
    sr.Close(); // BREAKPOINT 2
}

如果我在断点 1 检查result,我可以看到结果包含 Facebook 登录页面的 html 代码。它告诉我,我的浏览器中没有启用 cookie,即使我的cookiaJar 已经捕获了 6 个 cookie。

同样,如果我在断点 2 处检查 result,我可以看到 html 代码告诉我“我必须登录才能看到这个页面”。

现在,我知道 Facebook 可以在没有 JavaScript 的情况下工作,并且我在我的 cookieJar 中捕获了 6 个 cookie。我有点困惑为什么这不起作用?

(顺便说一句,我的密码有大写、小写、数字和符号。我需要用URLEncode()对其进行编码吗?我已经使用纯文本密码成功登录了另一个网站,而没有对密码进行编码。 )

【问题讨论】:

    标签: c# facebook cookies httpwebrequest


    【解决方案1】:

    您从用于登录的 https 切换到用于读取的 http。尝试将第二次读取更改为也使用 https,看看是否有帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-04-21
      • 2017-10-25
      • 1970-01-01
      • 2011-06-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多