curlを使用してWeb要求を自動化しますか?


13

仕事で使用しなければならない「企業」システムがいくつかあります。それらのいくつかはひどいもので、フレームやポップアップなどがあります。

カールなどを使用して、いくつかのものを自動化することを考えていました。ログインし、ハイパーリンクをクリックし、データを設定して、投稿を行います。

curlを使用することはできますか?それとも、Seleniumのようなものを使用したほうが良いでしょうか?


1
そのためには、Pythonのzope.testbrowserを使用します。
プネヘヘ

2
Javascriptを使用できるようにする必要がありますか?
14:28に直観


2
セッションを使用すると、各リクエストでセッションIDが送信されます。CookieまたはGETパラメーターのいずれか。wgetそしてcurl、あなたのブラウザはまた、このようなものを使用している場合ので、ちょうどダウンローダにそれを指定するのに十分であり、Netscapeクッキーファイルを使用することができます。では、どのようなブラウザを使用していますか?
マナトワーク

2
それらを使用した簡単な解決策はありません。FirefoxとChromeはSQLiteを使用し、Operaにはバイナリデータファイル形式があります。セッションIDを検索し、手動でダウンローダーに渡す必要があるようです。
マナトワーク

回答:


13

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


Firefox Live HTTPヘッダーに加えて、SafariとChromeの両方で、Webインスペクターでオブジェクト別に分類されたヘッダーを表示できます。
バハマ

15

ページのコンテンツをダウンロードする単純なケースでは、curlまたはwgetを使用します。どちらもHTTP経由でファイルをダウンロードするように設計されたコマンドラインツールであり、多くのオプションがあります。あなたの場合、これらのツールをブラウザのように見えるようにする必要があるでしょう。lutzkyの答えpenguin359の答えは、その点で役立つcurlおよびwgetオプションについて言及しています。

ログインする必要がある場合、最初にWebブラウザーに手動でログインしてからWebブラウザーのCookieをエクスポートする方がはるかに簡単な場合がありますallcookiesやFirefoxのCookieのエクスポートなどの拡張機能が役立ちます)。

一部のページのコンテンツ解析したり、フォームを投稿したりする必要がある場合は、curlやwgetよりも手の込んだツールが必要になる場合があります。LWP(libwww)およびHTML::TreeBuilder(HTML-Tree)を備えたPerl、または標準ライブラリ(特にhttplibおよびhtmllib)を備えたPythonがあります。

Webサイトとのより複雑なやり取りについては、PerlのWWW :: Mechanizeを参照してください。このPerlライブラリは、POST、フォーム、Cookieを含むWebブラウザーのようなWebサイトと対話するための高レベル関数を定義しますが、Javascriptは含みません。Perlがあなたのお茶ではない場合、このライブラリにはPython mechanizeRuby Mechanizeなどの他の言語の同様の機能を持つ模倣があります。

最後に、Javascriptが必要な場合、通常のアプローチは、ブラウザー自動化フレームワークによって駆動されるWebブラウザーを使用することです。セレンワティールが一般的な選択肢です。また、参照コンテンツはJavaScriptによるポスト塗装を含むWebページを取得することができますSeleniumRC以外に何か良いツールはありますか?


6

私のお気に入りはwgetですので、例を挙げて説明します。あなたがしたいことは、ブラウザセッションをできる限り厳密に複製することなので、関連するコマンドライン引数を使用します。必要なものは、サイトがブラウザをどれだけ徹底的にチェックするかに依存します。--referer(sic)は通常は十分ですが--user-agent、and も必要になる場合があり--load-cookiesます。

この手法は基本的にブラウザのなりすましです-あなたはwgetブラウザとしてサイトに自分自身を提示しようとしています。直面する最大の問題はCAPTCHAです。これは、指定したサンプルサイトにはありません。また、サイトのタイミングポリシー(この場合は45秒)を順守していないと、ブロックされる可能性があります。

異なるセッション間で同じファイルをダウンロードすることはおそらく不可能です-サイトは特定のファイルのダウンロード権限を特定のセッションに付与します。


包括的な考慮事項を備えた適切な回答。ありがとう
xiaohan2012
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.