2017-03-20 3 views
1

私が知ることから、サイトはボタンをクリックする必要があり、JavaScriptを実行してからPOSTリクエストを送信します。 POST要求はpdfを返します。ファイルをダウンロードするために見つけたすべてのソリューションは、WebClient(ただし、私はpdfのURLはありません)またはHTTPRequest(クリックを呼び出すことはできません)を使用しています。Javascriptで生成されたPOST要求からPDFをダウンロードするにはどうすればよいですか?

私はWebBrowserでクリックを呼び出すことができます。私は、Fiddlerを使って、pdfがサイトの応答で返されているのを見ることができますが、私のマシンにどのように取得するのか分かりません。

+0

Fiddlerはあなたにajaxリクエストを表示していませんか? – Crowcoder

+0

それは私にとっては新しい言葉ですが、投稿要求やヘッダーなどを意味するのなら、そうです。しかし、ポストリクエストの値の一部は、サイトのJavascriptなどで動的に生成されているようです。それは毎回変わる何らかの種類のトークンを使います。それ以外の場合は、HTTPRequestを使用します。 –

+1

これはおそらくクロスサイトリクエスト偽造トークンです。 WebBrowserコントロールから応答にアクセスできるかどうかはわかりません。そうでない場合は、誰でもこの質問に答えるための非常に詳細なリクエスト/レスポンスのトレースを提供する必要があります。 – Crowcoder

答えて

0

私はFirefoxのドライバに渡され、次のコンフィグ設定で、この使用してセレンを解決することができた:

saveDirがターゲットダウンロードディレクトリである
profile = Firefox.FirefoxProfile() 
profile.SetPreference("browser.download.dir", saveDir) 
profile.SetPreference("browser.download.folderList", 2) 
profile.SetPreference("browser.helperApps.neverAsk.saveToDisk","application/pdf") 
profile.SetPreference("pdfjs.disabled",True) 
profile.SetPreference("browser.tabs.remote.autostart", False) 
profile.SetPreference("browser.tabs.remote.autostart.1", False) 
profile.SetPreference("browser.tabs.remote.autostart.2", False) 
profile.SetPreference("browser.tabs.remote.force-enable", "false") 
driver = Firefox.FirefoxDriver(profile) 

。これらの設定の前半は、プロンプトなしでFirefoxをダウンロードさせるものです。browser.helperApps.neverAsk.saveToDiskの値はMIMEタイプです。 config32の後半は、driver.Quit()が呼び出されたときにFirefoxがクラッシュするのを防ぎます。

関連する問題