カールを使用してネットワーク要求を自動化しますか?

カールを使用してネットワーク要求を自動化しますか?

職場で使用する必要がある「会社」システムがいくつかあります。そのうちのいくつかは、フレーム、ポップアップなどのためにひどいものです。

私はカールなどを使って何かを自動化しようとしています。ログインしてハイパーリンクをクリックしてデータを設定し、情報を公開する必要があります。

カールは使えますか?それともSeleniumのようなものを使う方が良いでしょうか?

答え1

簡単な場合ダウンロードページの内容を使ってカールまたは得る。どちらもHTTP経由でファイルをダウンロードするように設計されたコマンドラインツールであり、さまざまなオプションがあります。あなたの場合、これらのツールをブラウザのように見せたいと思うかもしれません。Lutskyの答えそしてペンギン359の答えこの点で役に立ついくつかのカールとwgetオプションについて言及してください。

時々必要なときログイン、まずWebブラウザから手動でログインする方がはるかに簡単です。WebブラウザのCookieのエクスポート(次のように拡張すべてのクッキーまたはクッキーのエクスポートFirefoxが役に立つかもしれません)。

必要な場合コンテンツ分析一部のページまたはメールフォーム、カール、wgetよりも高度なツールが必要な場合があります。 Perlにはいくつかの良いツールがあります。LWP(libwww)そしてHTML::TreeBuilder(HTMLツリー)または標準ライブラリを持つPython(特にhttplibそしてhtmllib)。

詳細複雑な相互作用ウェブサイトがあります。参照はPerlです。WWW::機械化。このPerlライブラリは、POST、フォーム、Cookieなど、WebブラウザなどのWebサイトと対話するための高度な機能を定義しますが、Javascriptは定義しません。 Perlが気に入らない場合、このライブラリには他の言語の同様の機能を模倣しています。Python機械化そしてルビー機械化

最後に必要なときJavaScript一般的なアプローチは、ブラウザオートメーションフレームワークで駆動されるWebブラウザを使用することです。セレンそしてバティエ人気のある選択でもあります。SeleniumRCに加えて、JavaScriptを描いた後にコンテンツを含むWebページを取得するための良いツールはありますか?

答え2

はい、カールを使用すると完全に可能です。最も重要なのは、カールを使用している間にクッキーを保存して再ロードすることです--cookie-jar。必要に応じてフォームデータを公開することもできます。私は通常、Live HTTP HeadersというFirefoxプラグインを使用してWebサイトを閲覧したときに何が起こるのかをキャプチャします。すべてのヘッダーを記録し、すべてのフォーム投稿も記録するので、カールの使い方を理解しようとするときに非常に便利です。私はさまざまなカール呼び出しを自動化し、mktempパイプと一時ファイル(で提供)を使用してWebページでいくつかの制限された処理を実行するbashスクリプトを作成しますが、多くのWebページ処理を実行する必要がある場合は、通常LibWWWを使用してPerlに切り替えますします。

答え3

私が一番好きなものwgetなので、例をあげましょう。あなたが望むのはブラウザセッションをできるだけ近くに複製することですので、関連するコマンドライン引数を使用してください。必要なのは、ウェブサイトがあなたのブラウザをどれだけ徹底的に調べるかによって異なります。 (sic)は通常十分ですが、および--refererが必要な場合があります。--user-agent--load-cookies

wgetこの技術は基本的にブラウザスプーフィングです。つまり、自分をブラウザでウェブサイトに表示しようとします。あなたが直面する最大の問題は、あなたが提供したサンプルウェブサイトに表示されないセキュリティ文字です。また、サイトの時間ポリシー(この場合45秒)を必ず守ってください。それ以外の場合はブロックされる可能性があります。

おそらくいいえ同じファイルを複数のセッションからダウンロードできます。サイトでは、特定のセッションに特定のファイルのダウンロード権限を付与します。

関連情報