Public Class MixiTool
Dim Shared encoder As Encoding = Encoding.GetEncoding("EUC-JP")
Shared Function HttpGet(url As String, cc As CookieContainer) As String
' リクエストの作成
Dim req As HttpWebRequest _
= CType(WebRequest.Create(url), HttpWebRequest)
req.CookieContainer = cc
Dim res As WebResponse = req.GetResponse()
' レスポンスの読み取り
Dim resStream As Stream = res.GetResponseStream()
Dim sr As StreamReader = new StreamReader(resStream, encoder)
Dim result As String = sr.ReadToEnd()
sr.Close()
resStream.Close()
Return result
End Function
Shared Function HttpPost(url As String, vals As Hashtable, cc As CookieContainer) As String
Dim param As String = ""
For Each k As String In vals.Keys
param += String.Format("{0}={1}&", k, vals(k))
Next
Dim data As byte() = Encoding.ASCII.GetBytes(param)
' リクエストの作成
Dim req As HttpWebRequest _
= CType(WebRequest.Create(url), HttpWebRequest)
req.Method = "POST"
req.ContentType = "application/x-www-form-urlencoded"
req.ContentLength = data.Length
req.CookieContainer = cc
' ポスト・データの書き込み
Dim reqStream As Stream = req.GetRequestStream()
reqStream.Write(data, 0, data.Length)
reqStream.Close()
Dim res As WebResponse = req.GetResponse()
' レスポンスの読み取り
Dim resStream As Stream = res.GetResponseStream()
Dim sr As StreamReader = new StreamReader(resStream, encoder)
Dim result As String = sr.ReadToEnd()
sr.Close()
resStream.Close()
Return result
End Function
Shared Function Login(id As String, password As String, cc As CookieContainer) As String
' ログイン・ページへのアクセス
Dim vals As Hashtable = new Hashtable()
vals("next_url") = "/home.pl"
vals("email") = id
vals("password") = password
Dim loginUrl As String = "http://mixi.jp/login.pl"
Return HttpPost(loginUrl, vals, cc)
End Function
Shared Function ReadLog(cc As CookieContainer) As String
' 足あとページへのアクセス
Dim showlog As String = "http://mixi.jp/show_log.pl"
Return HttpGet(showlog, cc)
End Function
Shared Sub Main()
Dim id As String = "あなたのメールアドレス"
Dim password As String = "あなたのパスワード"
Dim cc As CookieContainer = new CookieContainer()
Login(id, password, cc)
Dim html As String = ReadLog(cc)
' ログ部分の切り出し(簡易版)
Dim lines As String() = html.Split(vbLf)
For Each line As String In lines
If line.IndexOf("年") >= 0
Dim t As String() = line.Split(New Char() {"<", ">"})
Console.WriteLine(t(0) + t(2))
End If
Next
' 出力例:
' 2005年07月13日 16:54 XXXX
' 2005年07月12日 05:43 YY
' 2005年07月11日 22:50 ZZZ
' ……
End Sub
End Class