5

あなたのスケジュールを表示するためのウェブサイト用のモバイルアプリを作成中です。彼らは API を提供しておらず、API を作成するつもりもありません。

Web サイトは Ajax でのみ機能しますが、これらのリクエストを偽造して Web サイトをスクレイピングするには、__EVENTVALIDATION投稿フィールドを偽造する必要があります。

私は Web サイトをまったく制御できず、ASP.NET や Microsoft Ajax を使用して何かを構築したことはありません。

誰かがこれをしましたか?

__EVENTVALIDATIONフィールドに次のパターンがあることがわかりました(...リクエストに応じて変更されたバイト、base64 でデコードされたバージョンの 16 進ダンプを表します):

d8 01 16 13 02 4f 0a
...
f6 e0 84 d4 05 02 a0 3f
e2 3f 03 02 3f d8 d1 d5 0c 02 bb 82 cf ec 08 02
b4 b5 99 f8 0b 02 3f 89 3f eb 04 02 d5 83 90 88
0a 02 8a デシベル 94 90 03 02 8b cf 3f 85 08 02 93 3f
b1 3f 06 02 9b 3f 8f a5 02 02 b5 b4 af 85 01 02
d1 fc ae 9c 0e 02 b4 e2 94 9e 0a 02 3f e2 94 9e
0a 02 3f e2 94 9e 0a 02 bb 92 80 a5 06
...                                  
4

2 に答える 2

9

以前、ASP.NET サイトのスクレイパーを構築する際に、この問題に対処したことがあります。ブラウザ ユーザーが通常アクセスする最初のページをリクエストし、__VIEWSTATE__EVENTVALIDATIONハッシュを抽出して、実際に必要なデータの 2 番目のリクエストを作成する際にこれらを使用する必要があります。

たとえば、フォーム送信からの応答をスクレイピングしている場合:

  1. フォームがあるページに対して AJAX リクエストを行う
  2. 応答からビューステートとイベント検証ハッシュを抽出する
  3. フォーム送信をシミュレートする新しい AJAX リクエストを作成し、ハッシュをパラメーターとして渡します

マークアップからハッシュを抽出する JavaScript 関数を探している場合は、GitHub でms-viewstateとして使用する関数を公開しています。

于 2013-03-13T18:23:10.397 に答える
1

__EVENTVALIDATIONセキュリティ対策です。

この機能は、潜在的に悪意のあるユーザーがクライアントから送信する不正な要求を防ぎます。すべてのポストバック イベントとコールバック イベントが予期されるユーザー インターフェイス要素から発生することを保証するために、ページはイベントに追加の検証レイヤーを追加します。このページは基本的に、要求の内容を __EVENTVALIDATION フィールドの情報と照合して、クライアントに余分な入力フィールドが追加されていないこと、およびサーバーで既に認識されているリストでその値が選択されていることを確認します。ページは、レンダリング中にイベント検証フィールドを生成します。これは、情報が利用可能になる最後の瞬間です。ビュー ステートと同様に、イベント検証フィールドには、クライアント側の改ざんを防ぐためのハッシュ値が含まれています。

ハッシュ値は、サーバー レベルのキーに基づいています。したがって、そのハッシュを複製することはできません。むしろ、サーバーにアクセスせずに複製した場合、セキュリティ ホールを見つけたと思います。

参照: MSDN

于 2012-10-30T22:39:27.437 に答える