基本的に、HTMLページ、写真、音声の束であるサーバー上にサイトがあります。
そのサーバーへのパスワードを失ったため、そこに保存されているすべてのものを取得する必要があります。ページごとに移動してすべてを保存できますが、サイトには100ページ以上あります。
OSXを使用しています。私は使用しようとしましたwget
が、サーバーがそれをブロックしていると思います。
そのコンテンツを取得するために使用できる代替手段はありますか?
基本的に、HTMLページ、写真、音声の束であるサーバー上にサイトがあります。
そのサーバーへのパスワードを失ったため、そこに保存されているすべてのものを取得する必要があります。ページごとに移動してすべてを保存できますが、サイトには100ページ以上あります。
OSXを使用しています。私は使用しようとしましたwget
が、サーバーがそれをブロックしていると思います。
そのコンテンツを取得するために使用できる代替手段はありますか?
回答:
サーバーがwgetをブロックしている場合、httpヘッダーの「User-agent:」フィールドに基づいてブロックしている可能性が最も高いのは、それが最初に知る唯一の方法だからです。また、IPをブロックすることもありますが、その場合は別のソフトウェアを使用しても役に立たないか、要求のセットがどれだけ速いかに基づいて自動化を識別するスキームがあります(3.2秒で100ページを閲覧しないため) 。誰もそれをしていると聞いたことはありませんが、可能です。
また、wgetを遅くする方法について聞いたことはありませんが、ユーザーエージェントフィールドを偽装する方法があります。
wget --user-agent=""
必須ではないため、manページによると「User-agent:」は完全に削除されます。サーバーがそれを気に入らない場合は、--user-agent="Mozilla/5.0"
どれが十分か試してみてください。
もちろん、「サーバーがそれをブロックしていると思う」理由をもっと詳しく説明しておくと役立ちます。wgetは何を言っていますか、それともタイムアウトですか?
wget
クエリ間で待機したり、レートやダウンロード量を制限したりするオプションがいくつかあります。info
詳細についてはページを確認してください。
私は通常httrack
、サイトからWebコンテンツをダウンロード/ミラーリングするために使用します。
$ httrack http://2011.example.com -K -w -O . -%v --robots=0 -c1 %e0
実行後、ローカルで参照可能なディレクトリ構造が残ります。例えば:
$ ls -l
total 304
-rw-r--r-- 1 saml saml 4243 Aug 17 10:20 backblue.gif
-rw-r--r-- 1 saml saml 828 Aug 17 10:20 fade.gif
drwx------ 3 saml saml 4096 Aug 17 10:20 hts-cache
-rw-rw-r-- 1 saml saml 233 Aug 17 10:20 hts-in_progress.lock
-rw-rw-r-- 1 saml saml 1517 Aug 17 10:20 hts-log.txt
-rw------- 1 saml saml 271920 Aug 17 10:22 hts-nohup.out
-rw-r--r-- 1 saml saml 5141 Aug 17 10:20 index.html
drwxr-xr-x 10 saml saml 4096 Aug 17 10:21 2011.example.com
ダウンロードすると、次のタイプの出力が表示されます。
Bytes saved: 21,89KiB Links scanned: 12/45 (+4)
Time: 2s Files written: 4
Transfer rate: 2,65KiB/s (2,65KiB/s) Files updated: 1
Active connections: 1 Errors: 7
Current job: parsing HTML file (57%)
request - 2011.example.com/cgi-bin/hostnames.pl 0B / 8,00KiB
バックグラウンドおよび/または中止して、後で再開できます。これは、機能の点で氷山の一角にすぎません。また、ダウンロードの設定と進行状況の監視のためのGUIもあります。
httrack
ウェブサイト上およびグーグルによる広範なドキュメントがあります。