単純なやりとりのために、Seleniumのような、記録や再生要求をするツールは本当に必要ありません。
は、あなただけが、すでに言及したツールが必要:[ネットワーク]タブを使用します。
- Chromeはすでに必要な開発ツールが付属しています。ダウンロードするプラグインはありません。 Safariが動作するかどうかは分かりません。開発ツールに「ネットワーク」タブが表示されません。
curl
とwget
はクッキーとPOSTデータをサポートしていますが、私は自動化のためにカールを試みました。
(これはいくつかの経験をとる)適切に行われる必要があるいくつかの重要なステップがあります:
- 実際のユーザーとの対話をモデル化する必要性を要求されたページのシーケンス。これは、バックエンドがフォームまたは認証をどのように処理するかを正確に把握していないため、重要です。これはChromeのデベロッパーツールの[ネットワーク]タブが表示される場所です(ログが消去されないようにする「記録」ボタンがあります)。分析のために実際のユーザー操作を記録する準備ができたら、各セッションの始めにクッキーをクリアしてください。
curl
とwget
という適切なオプションを使用すると、Cookieとリダイレクトが正しく処理されます。
- すべてのPOSTフォームフィールドは、おそらくあなたは、多くの場合、ここでは3カールのサンプルは私がダウンロードして書いたautomation scriptのために書いたことを呼び出しますCSRF
を防ぐために、一回だけの値を持つフィールドが表示されます(送信する必要があります。私のISPからのブロードバンド利用状況:
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
の慎重な使用に注意してください。sleep
s、--user-agent
、および--referer
は必要ない場合があります(バックエンドではチェックされない場合があります)が、エラーの可能性を最小限に抑えるためにそれらを含めるほど簡単です。
この例では、動的なPOSTフィールドがないことが幸運でした。反CSRFナンスの分野で、私は抽出して、後続の要求に渡す必要がありました。この自動化は認証用であるためです。他のタイプのWebインタラクションを自動化するには、ユーザーが既にログインした後に、これらの動的生成フィールドの多くを実行する可能性があります。
これはかなり古いと思いますが、私のようにGoogleから来た場合、ChromeはネットワークタブのXHRリクエストを右クリックして「cURLとしてコピー」を選択すると完全なものをコピーしますあなたのクリップボードへのリクエスト。 :) –
@SSHhisあなたは私の人生を保存しました!最高の答えを!ありがとうございました:) – Cyborg