【C#】ニコニコにログインする方法

「C#」でニコニコにログインする方法についてソースコード付きでまとめました。

サイトにログイン

C#を用いて、ニコニコ動画にログインし、ログイン後のページのHTMLを取得します。

Basic認証の概要
詳細 ■「「Form認証」「Basic認証」の違い

サンプルコード

サンプルプログラムのソースコードです。

using System;
using System.IO;
using System.Net;
using System.Text;
using System.Collections;

namespace ConsoleApplication1
{
    public class Program
    {
        static void Main()
        {
        // ユーザーIDとパスワード
            string userid = "mail@address";
            string password = "password";

            // ログイン画面へのアクセスパラメータ
            Hashtable vals = new Hashtable();
            vals["next_url"] = "";
            vals["mail"]     = userid;
            vals["password"] = password;

            // POSTされるURL(ログインボタン押下時)
            string url = "https://secure.nicovideo.jp/secure/login?site=niconico";

            // パラメータを"param1=value1¶m2=value2"の形にまとめる
            string param = "";
            foreach (string k in vals.Keys)
            {
                param += String.Format("{0}={1}&", k, vals[k]);
            }
            byte[] data = Encoding.ASCII.GetBytes(param);

            // HTTP POSTリクエストの作成
            CookieContainer cc = new CookieContainer(); //認証用クッキーを格納するコンテナ
            HttpWebRequest req = (HttpWebRequest)WebRequest.Create(url);
            req.Method          = "POST";
            req.ContentType     = "application/x-www-form-urlencoded";
            req.ContentLength   = data.Length;
            req.CookieContainer = cc;

            // POSTを実行
            Stream reqStream = req.GetRequestStream();
            reqStream.Write(data, 0, data.Length);
            reqStream.Close();

            //レスポンスを取得
            WebResponse res = req.GetResponse();
            Stream resStream = res.GetResponseStream();
            
            Encoding encoder = Encoding.GetEncoding("UTF-8");
            StreamReader sr = new StreamReader(resStream, encoder);
            string result = sr.ReadToEnd();
            sr.Close();
            resStream.Close();

            //ログイン後のHTMLを表示
            Console.WriteLine(result);

            // HTTP GETでアクセス(マイページURL)
            url = "http://www.nicovideo.jp/my/top";

            // HTTP GET リクエストの作成
            req = (HttpWebRequest)WebRequest.Create(url);
            req.CookieContainer = cc;//取得済みのクッキーコンテナ
            res = req.GetResponse();
            resStream = res.GetResponseStream();
            sr = new StreamReader(resStream, encoder);
            result = sr.ReadToEnd();
            sr.Close();
            resStream.Close();

            //マイページのHTMLを表示
            Console.WriteLine(result);
        }
    }
}
関連ページ
1 C#によるWEBサイトへのログイン方法(ベーシック認証、クッキー認証)
2 【C#】画像処理入門
3 【C#入門】基礎文法とサンプル集
関連記事