「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#入門】基礎文法とサンプル集 |


コメント