web-dev-qa-db-ja.com

ブラウザを介してhttpフォームの投稿を記録する

Webサイトへのログインとフォームの送信を自動化しようとしています。

HTTP GETおよびPOSTリクエストを後で再生できる形式でリクエストを記録できるブラウザプラグイン(FirefoxまたはChrome用)はありますか? curlやwgetなどを使用して、スクリプトから自動化できるもの。

Chrome開発者ツールを使用してPOST=フォームデータをキャプチャしようとしましたが、wgetでリクエストを複製しようとするとエラーが発生します。理想的には、多くの試行錯誤を行うのではなく、これを実行するニースの自動化された方法があるでしょう。

35
Alex Spurling

単純な対話の場合、リクエストを記録および再生するSeleniumのようなツールは実際には必要ありません。

既に言及したツールのみが必要です。

  1. Chromeには、必要な開発者ツールが既に付属しています。[ネットワーク]タブを使用します。ダウンロードするプラグインはありません。 Safariが動作するかどうかはわかりません。その開発ツールに[ネットワーク]タブが表示されません。
  2. curlwgetは両方ともcookieとPOST dataをサポートしていますが、自動化のためにcurlを試しただけです。

適切に実行する必要があるいくつかの重要な手順があります(これにはある程度の経験が必要です)。

  1. 要求されるページのシーケンスは、実際のユーザーインタラクションをモデル化する必要があります。バックエンドがフォームまたは認証をどのように処理するか正確にはわからないため、これは重要です。これは、Chromeの開発者ツールの[ネットワーク]タブが表示される場所です(ログのクリアを防ぐ「記録」ボタンがあることに注意してください)。分析のために実際のユーザーインタラクションを記録する準備をするときは、各セッションの開始時にCookieをクリアします。
  2. curlwgetのすべての適切なオプションを使用する必要があります。これにより、Cookieとリダイレクトが適切に処理されます。
  3. すべてのPOSTフォームフィールドを送信する必要がある可能性があります(多くの場合、ナンス値を持つフィールドが表示されるのを防ぎます [〜#〜] csrf [〜#〜]

これは、ISPからブロードバンドの使用状況をダウンロードするために書いた 自動化スクリプト のために書いた3つのcurl呼び出しのサンプルです。

curl \
    --silent \
    --location \
    --user-agent "$USER_AGENT" \
    --cookie-jar "$COOKIES_PATH.txt" \
    'https://idp.optusnet.com.au/idp/optus/Authn/Service?spEntityID=https%3A%2F%2Fwww.optuszoo.com.au%2Fshibboleth&j_principal_type=ISP' >$USAGE_PATH-1.html 2>&1 && sleep 3 &&

# --location because the previous request returns with a series of redirects "302 Moved Temporarily" or "302 Found"
curl \
    --silent \
    --location \
    --user-agent "$USER_AGENT" \
    --cookie "$COOKIES_PATH.txt" \
    --cookie-jar "$COOKIES_PATH.txt" \
    --referer 'https://idp.optusnet.com.au/idp/optus/Authn/Service?spEntityID=https%3A%2F%2Fwww.optuszoo.com.au%2Fshibboleth&j_principal_type=ISP' \
    --data "spEntityID=https://www.optuszoo.com.au/shibboleth&j_principal_type=ISP&j_username=$OPTUS_USERNAME&j_password=$OPTUS_PASSWORD&j_security_check=true" \
    'https://idp.optusnet.com.au/idp/optus/Authn/Service' >$USAGE_PATH-2.html 2>&1 && sleep 1 &&

curl \
    --silent \
    --location \
    --user-agent "$USER_AGENT" \
    --cookie "$COOKIES_PATH.txt" \
    --cookie-jar "$COOKIES_PATH.txt" \
    --referer 'https://www.optuszoo.com.au/' \
    'https://www.optuszoo.com.au//r/ffmu' >$USAGE_PATH-3.html 2>/dev/null

--cookie-jar--cookie、および--locationの注意深い使用に注意してください。 sleeps、--user-agent、および--refererは必要ないかもしれません(バックエンドはチェックしないかもしれません)が、エラーの可能性を最小限にするためにそれらを含めるのに十分単純です。

この例では、幸運なことに、動的なPOSTフィールド、たとえば、アンチCSRFナンスフィールドなど、抽出して後続のリクエストに渡す必要があったフィールドがありませんでした。他の種類のWebインタラクションを自動化するには、ユーザーが既にログインした後、これらの動的に生成されたフィールドの多くに遭遇する可能性があります。

23
huyz

正確にはブラウザのプラグインではありませんが、 Fiddler は、やり取りされるすべてのHTTPデータをキャプチャできます。 FiddlerScript または FiddlerCore を使用すると、 export をテキストファイルに-そしてそれをcURLに要求ヘッダーおよび要求本文として渡すのは簡単です。

5
Piskvor

Firefoxでは、PersistオプションのFirebugを有効にして、[〜#〜] post [〜#〜]。次に、 "Bookmark POST" アドオンをインストールして使用し、後で使用するために[〜#〜] post [〜#〜]リクエストをブックマークします。

4
Finn Haakansson

Firefox Firebugには既にWebリクエストをcurlリクエストとしてコピーできる機能があります。そのため、コマンドラインにリクエストのさまざまな要素がすべて表示されます。

Firebugをオンにして、Netパネルでリクエストを右クリックし、Copy as cURLを選択します。次に、curlで使用します https://hacks.mozilla.org/2013/08/firebug-1-12-new-features/#copyAsCURL

3
AzizSM

Selenium を試しましたか?

3
DanSingerman

選択する方法が多すぎます。

  1. FirefoxおよびSelenium IDEを使用します。ブラウザのアクションを記録できます

  2. ユーザーSelenium Webドライバー。 RubyまたはJavaで記述したスクリプトにより、さまざまなブラウザーアクションをシミュレートできます。

  3. Firefoxのマクロプラグインを使用して、絶対クリックとキー入力をシミュレートします。

  4. OSレベルのマクロアプリケーションを使用して、3と同じ操作を行います。

  5. 実際のフォームポストまたはCookieの相互作用をシミュレートするスクリプト(PHPなど)を記述します。

No.1は一般的で使いやすいです。 No.4は強力ですが、自動化を磨くには時間が必要です。
No.3はNo.4とNo.1の中間です。 No.2は、環境テストとストレステストのツールにもなります。 No.5は、最も柔軟でリソースを節約しているようです。

2

リクエストメーカーchromeプラグインはそれを行います。 https://chrome.google.com/webstore/detail/request-maker/kajfghlhfkcocafkcjlajldicbikpgnp?hl=en

1
princecharmx

最近、私はこの美しいchromeあなたが尋ねるものを行う拡張機能を横切ってカムします: Katalon Recorder

Katalon Recorderを使用すると、テストの自動化が非常に簡単になります。

  • 記録、再生、速度制御によるデバッグ、一時停止/再開、ブレークポイント機能。

  • Selenium 3コアエンジンを搭載した他の拡張機能と比較して、最速の実行速度をお楽しみください。

  • XPathとCSSを含む複数のロケータータイプを使用します。

  • 元のSelenium IDEコマンド(Selenese)、さらにif ... elseIf ... else ... endIfおよびwhile ... endWhileブロックステートメントを使用します。ファイル入力制御のテストがサポートされています。

  • データ駆動型テストのために、CSVファイルからテストデータをインポートします。

  • ログ、スクリーンショットのキャプチャ、Katalon Analyticsの履歴データと分析で簡単にレポートします。

  • スイートでテストケースを作成および整理します。自動保存機能で作業内容を失わないでください。

  • 元のSelenium IDE(Firefox拡張機能)テストをインポートします。

  • これらのフレームワークのSelenium WebDriverスクリプトにエクスポート:C#(MSTestおよびNUnit)、Java(TestNGおよびJUnit)、Ruby(RSpec)、Python(unittest)、Groovy(Katalon Studio)、Robot Framework、およびXML。

0
Promod

Safari開発者ツールとFirebugで十分です。

0
Alessandro