2012-01-30 20 views
2

ウェブページを掻き集めるユーティリティを書いている間に問題が発生しました。VIEWSTATEを掻き集める

データを取得するためにPOSTリクエストを送信しています。私は廃棄しているウェブの動作を模倣しています(フィドラーで収集した情報によると)。

私は、VIEWSTATE以外のPOSTですべてのパラメータを自動的に置き換えることができました。 私の推測では、Webは与えられたVIEWSTATEに従っていくつかのロジックを実行しているので、期待した結果が得られないのです(VIEWSTATE内部に値を入力しようとしましたが、このプロセスを自動化する)

VIEWSTATE文字列を壊さずに編集できる方法はありますか?

&は、base64(POSTアクションの前に最後にURLEncode)を使用してエンコードを戻し、有効にすることができませんでした。

+1

.Netサイトは、機械化のようなものがなければ擦れてしまうほど痛いです。私はどのオプションがC#のために存在するか分からない。 – pguardiario

+0

@pguardiarioそうだね。私はちょうど別の方向を取るかもしれないと思う、おそらくSileniumを使って作られたカスタムスクリプトを使用します。手動で少し少なくなります。 –

+1

@AlonAmir、セレンと一緒に行かないでください。私は同じ問題を抱えていました。このリンクは参考になりました。https://asoftwaredeveloper.wordpress.com/category/extracting-view-state/ – xameeramir

答えて

4

お役に立てば幸いです。

べきはとにかく、暗号化されるビューステート。

最後に返されるViewStateは、サーバーから送信されたviewstateと同じでなければなりません。これは、あなたがしようとしているタイプのXSRF攻撃の保護です。それはそれが何のためにあるかほとんどです。言い換えれば、あなたがしようとしていることを実行するには、サーバーが送ったビューステートのコピーを保持し、同じviewstateを送り返す必要があります。サーバーは新しいビューステートを送信します。新しいビューステートは、次の要求などで送信する必要があります。

+0

VIEWSTATEを維持するということは、私が廃棄しているフォームの各ステップを実行しなければならないということです。 VIEWSTATE以外のすべての情報を入力する必要があるため、フォームを記入するために必要なステップをスキップすることができます。私はVIEWSTATEをそのまま引き出し、ユーザーが行うように段階的に行うオプションがないと思います。 –

+0

@AlonAmir、Correct。暗号化されたビューステートの目的は、それを強制することです。 – Ben

1

asp.netと同じシリアライザを使用することができます。私はそれがHiddenFieldPageStatePersisterというクラスだと思います。

http://msdn.microsoft.com/en-us/library/system.web.ui.hiddenfieldpagestatepersister.aspx

は、ビューステートがおそらく暗号化されて

+0

できればいいと思いますが、私はそのインスタンスをどのように初期化できるのか分かりませんビューステートストリングからのクラス。実際に.netウェブを作成するときにのみ使用できるように見えます。 –

+0

基本クラスをチェックしてください。おそらくサブクラス化すると役立ちます。私はそれが文字列を取得し、設定するためのテンプレートメソッドを持っていると思います。 – ivowiblo

関連する問題