■73364 / inTopicNo.3) |
Re[1]: C#で自動ログインを実装にあたって |
□投稿者/ 魔界の仮面弁士 (124回)-(2014/09/17(Wed) 10:04:54)
|
■No73361 (takuya さん) に返信 > 今C#での自動ログインのURLの取得方法を導き出そうと考えています。 > http://codezine.jp/
アカウントが無いと試せませんが、多分こんな感じ?
string email = textBox1.Text; string pass = textBox2.Text;
StringBuilder sb = new StringBuilder(); sb.Append("email=" + Uri.EscapeUriString(textBox1.Text)); sb.Append("&password=" + Uri.EscapeUriString(textBox2.Text)); sb.Append("&utm_source_name=" + Uri.EscapeUriString("codezine.jp")); sb.Append("&utm_term_name=" + Uri.EscapeUriString("/")); sb.Append("&ref=" + Uri.EscapeUriString("/")); byte[] post = System.Text.Encoding.UTF8.GetBytes(sb.ToString());
sb = new StringBuilder(); sb.AppendLine("Content-Type: application/x-www-form-urlencoded"); sb.AppendLine("Referer: http://codezine.jp/"); string header = sb.ToString();
webBrowser1.Navigate("https://codezine.jp/user/login", null, post, header);
> こういった場合にどのようにしてログイン処理をする際のURL+パラメータを取得することができるのでしょうか。 IE や Chrome で、F12 キーを押して管理者ツールを起動し、ログインボタンを 調べてみると、それが <button type="submit"> として実装されている事が分かります。
そして、その上位の form 要素を見てみると、 『<form action="https://codezine.jp/user/login" method="post">』 と記載されていました。これにより、POST 送出時の宛先が判明します。
さらに、その form の配下にあるコントロールを見てみると、 <input type="text" name="email"> <input type="hidden" name="utm_term_name" value="/"> <input type="hidden" name="utm_source_name" value="codezine.jp"> <input type="password" name="password"> <button type="submit" value="login"> の 5 つがある事が見てとれます。
ここまでの情報から、上に書いたソースコードを導き出す事が出来ました。 もっとも、それが正しい情報であるかどうかは保証しませんが。 (Cookie やスクリプトが使われているかどうかまでは調べていませんので)
あとは、Fiddler 等を用いて、通常のブラウザーから送出した時のリクエストと、 自アプリから送出した時のリクエストを比較しつつ、ログインが成功するかを 確認すれば、動作検証はできそうです。
まぁ、そういった、非標準的なツールからのアクセスが禁止されていないかどうかは、 規約その他をチェックした方が良いかも知れませんが…。
|
|