0

シナリオ: 一連のルール (CRUD) を維持できる内部 ASP.NET サイトがあります。新しいルールを追加するには、HTML フォームに入力して [送信] をクリックするだけです。現在の問題は、数百のルールを追加する必要があり、スクリプトを使用してこれを自動化したいということです。

当初計画:

  • X個の引数を取り、これらを使用して上記のWebページのフォーム送信を偽造できるスクリプトを作成します
  • ルールごとに 1 つの行を持ち、各列が HTML フォームの入力タグの 1 つを表すコンマ区切りファイル (または類似のファイル) を作成します。
  • コンマ区切りファイルを使用してフォーム送信スクリプトを行ごとに 1 回実行できる別のスクリプトを作成します。

私の試みはcurlを中心に行われ、オンライン テスト ページに対してうまく機能しました。残念ながら、ASP.NET ページに対して動作させることができず、Postback や Viewstate で何かを行う必要があると推測しています。

スニペット:

curl -s -u "DOMAIN\user:password" --ntlm -d "key1=value1" -d "key2=value2" http://internal/page.aspx

(GET を使用しているかのようにページを返します。エラー メッセージは表示されません)

質問:

Postbackを送信している ASP ページをだますにはどうすればよいですか? (別のスクリプトの提案も歓迎します)

編集

ASP ページからのスニペット:

<asp:LinkButton ... runat="server" OnClick="lbAddRule_Click" PostBackUrl="~/Page.aspx" />

コードビハインドのスニペット:

protected void lbAddRule_Click(object sender, EventArgs e) {
  if (Page.IsValid == true) {
    AddRule(x,y,z);
4

2 に答える 2

2

まったく異なるアプローチで、ブラウザ自体のスクリプトを作成することを検討しましたか?Selenium / WebDriver[1]やiMacros[2]など、非常に強力な手法がいくつかあり、どちらもこの種のスクリプトを可能にします。

[1] http://seleniumhq.org/docs/03_webdriver.html

[2] http://wiki.imacros.net/Browser_Automation

于 2012-05-08T01:36:41.500 に答える
1

これがRESTfulサービス(アクセスしているサービス)として意図されている場合は、現在フォームを処理しているページをWebサービスに書き換えることを検討することをお勧めします。次に、curlを使用して必要なものすべてにアクセスし、フォームを再配線して、すべてが以前と同じように機能するようにします。

于 2012-05-07T17:37:29.337 に答える