HttpWebRequestシミュレーションc#サイトログイン

2138 ワード

ユーザー名
パスワード

アナログログインasp.Netが開発したサイト


2つの問題に関心を持っています.コントロール属性によってデータを取得し、イベントに応答します.
上は普通のaspです.Netフォーム.ユーザー名、パスワードを入力すると、form POSTだけでなく、ボタンをクリックするとそれぞれバインドされたバックグラウンド関数に入ります.ログインをクリックしてログイン検証に入り、クリックしてパスワードを変更した場合はパスワード変更処理に入ります.
POSTデータの取得およびフォーマットは、ブラウザまたはhttpプロトコルツール、例えばfiddlerによって分析することができる.
上図に示すログインインタフェースで、コミットするフォームデータは、loginname=loginname&password=passwordです.この2つのデータのみをコミットすると、asp:TextBoxを通過できません.valueはデータを取得し、ボタン応答のイベントにもアクセスできません.

応答イベント


イベントをトリガーする方法1つのページに複数のpostボタン、例えば修正、削除、ボタンがあり、ページがコミットされると、対応するイベントに入ります.どのようなメカニズムでイベントをトリガーしても、満足のいく答えは見つからない.
以前、博問で助けを求めたことがあるが、熱心な園友の返事を徹底的に理解していないのか、問題はずっと解決していないが、通り過ぎた友达に感謝している.
博問リンク:1、c#シミュレーションWebログイン 2、HttpWebRequestシミュレーションログイン
ブログパークでこの博文を見てやっとc#サイトの登録が実現しました.
aspについて.Netが開発したサイトは、VIEWSTATEと_EVENTVALLIDATIONはデータとして書き込みます.
e.g.  loginname=loginname&password=password&__VIEWSTATE=&__EVENTVALIDATION=.
データはUrlEncode符号化処理が必要です.

データPOST詳細


1、フォームデータ、パラメータ名取得は前の2つの博問で詳細な解答を与えた.
2、固定された_VIEWSTATEと_EVENTVALIDATION.
この2つのデータはASP.NETならではで、ソースコードから取得できます.正規表現で実現する傾向があります.
取得__VIEWSTATE
Regex reg = new Regex("id=\"__VIEWSTATE\" value=\"((?<v>.*?)\")");


取得__EVENTVALIDATION
Regex("id=\"__EVENTVALIDATION\" value=\"((?<v>.*?)\")");

3、トリガーイベント
データを渡すときにコントロールのnameを加算します.イメージには2つのパラメータが必要です:btn.xとbtn.y.
  name=admin&password=123&__VIEWSTATE=&__EVENTVALIDATION=&login=.
loginはコミットボタンのnameです.