2012-04-18 59 views
2

cURLを使用してASPX(ASP.NET)ページ(外部サイト)に成功するために、POSTを成功させようとしています。__VIEWSTATEの明確化__EVENTVALIDATION __EVENTTARGET、__EVENTARGUMENTが必要です

私は(それはすべてサーバ側で行われている)、私も空いていない、引数 __VIEWSTATE__EVENTVALIDATION__EVENTTARGET、および__EVENTARGUMENT ANYを送信していないですページのルックスのためにあまり気にしないので、しかし、私は実際のデータを送信します。

これらの引数をASP.NETサーバーにPOSTすることがどれほど重要ですか?

私はASP.NETのプログラマーではありませんが、__EVENTVALIDATIONがここに苦労するかもしれません(?)。それとも、ブラウザとサーバーの間に、気にする必要がないものがありますか?

これが重要な場合、サーバーがPOSTSを受け入れるようにこれらの変数を模倣するにはどうすればよいですか?

+1

あなたは、この情報のために提出しているウェブサイトに尋ねることはできませんか? –

答えて

3

一般に、これらの値を排除することはできません。

ViewStateとEventValidationは、で、他の側で無効にされていない限り、重要です。反対側がそれらを使用し、ポストバックでそれらを見つけることができない場合は、スローエラーが表示され、プログラムの処理方法によって異なります。

ViewStateには、ページがポストバック後に使用する必要のある情報が含まれています。

EventValidationには、権限を持たないコマンドを起動しようとしないようにポストバックコントロールを検証するキーが含まれています。また、実行権限のない引数を送信することもできます。

例を挙げてみましょう:ポストバックをトリガーする数字、43、ボタンを送信するコントロールがあり、ID 43の情報を尋ねるとします。EventValidationは、スクリプトを実行して、IDを持つすべての番号を尋ね、あなたが考えるかもしれない結果を得る。

1

可能です。ちょうどcURLではありません。

機械化Pythonなどのブラウザエミュレータを使用することをお勧めします。ここにスクリプト例があります。試してみます。コマンドラインを使用してこのスクリプトを呼び出すと、結果としてHTMLが返されます。

import mechanize 
import cookielib 

# Browser 
br = mechanize.Browser() 

# Cookie Jar 
cj = cookielib.LWPCookieJar() 
br.set_cookiejar(cj) 

# Browser options 
br.set_handle_equiv(True) 
br.set_handle_gzip(True) 
br.set_handle_redirect(True) 
br.set_handle_referer(True) 
br.set_handle_robots(False) 

# Follows refresh 0, but it does not hang on refresh > 0 
br.set_handle_refresh(mechanize._http.HTTPRefreshProcessor(), max_time=1) 

# Want debugging messages? 
#br.set_debug_http(True) 
#br.set_debug_redirects(True) 
#br.set_debug_responses(True) 

# User-Agent (this is cheating, OK?) 
br.addheaders = [('User-agent', 'Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.1) Gecko/2008071615 Fedora/3.0.1-1.fc9 Firefox/3.0.1')] 

# Open some site, let's pick a random one, the first that pops in mind: 
r = br.open('http://www.example.com/') 
html = r.read() 

# Show the source 
print html 
# or 
print br.response().read() 

# Show the HTML title 
print br.title() 

# Show the response headers 
print r.info() 
# or 
print br.response().info() 

# Show the available forms 
for f in br.forms(): 
    print f 

# Select the first (index zero) form 
br.select_form(nr=0) 

# Let's search 
br.form['field']='value' 
br.submit() 

# Show HTML of results 
print br.response().read() 
関連する問題