编写自动登录www.yahoo.com的.NET应用程序的正确方法是什么?

Joh*_*ith 5 .net httprequest

以下代码不会登录到yahoo.应该如何重写?

(当然,"用户名"和"密码"将替换为我的实际帐户名和密码.)

    static void Main(string[] args)
    {
        string input = string.Format("username={0}&passwd={1}", "<username>", "<password>");

        WebRequest request = HttpWebRequest.Create("https://login.yahoo.com/config/login");
        request.Method = "POST";
        request.ContentType = "application/x-www-form-urlencoded";

        StreamWriter writer = new StreamWriter(request.GetRequestStream());
        writer.Write(input);
        writer.Close();

        StreamReader reader = new StreamReader(request.GetResponse().GetResponseStream());

        string x = reader.ReadToEnd();

        Console.Read();
    }
Run Code Online (Sandbox Code Playgroud)

Gam*_*ing 5

看一下雅虎页面的html源代码,你会发现有很多隐藏的字段

图像显示窗体的隐藏字段

用于保护用户,例如用于CSRF

可能是,您将首先向雅虎发送请求以获取有效的反CSRF令牌,然后将其包含在您的请求中.您还必须查看该网站使用的JavaScript.也许在客户端站点上计算出一些东西,然后使用登录数据发送.

请注意,因为这些网站经常会发生变化,也许明天您的实施将无法正常工作.