Cyotek WebCopy

導入

使用方法

上部にある[Website]に、対象とするWebサイトのアドレスを入力します。

まずScanでサイトを調査してダウンロードする対象を決定し、Copyでサイトのダウンロードを実行します。

Scan

[Website]入力欄の右にある[Scan]ボタンをクリックするとQuick Scanが実行され、サイトの構造が表示されます。ここで設定を変更するとサイトのパスの項目の色が変化し、ダウンロードから除外されることを確認できます。

[Quick Scan Settings]の設定はScanの方法であり、Copyとは無関係です。Quickly scanning a website - Cyotek WebCopy Help

ここの設定でクロールを制限しないと、サイト全体がダウンロード対象となります。

ここでの設定はメニューの【Project → Project Properties】の[General]に反映され、そこで確認と変更をできます。

Copy

[Website]入力欄の右にある[Copy]ボタンをクリックすると、ダウンロードが実行されます。

ダウンロードの一時停止や再開はできないため、十分に確認してから実行します。Downloading a website - Cyotek WebCopy Help

設定

設定値はレジストリのHKEY_CURRENT_USER\Software\Cyotek\WebCopy以下に保存されます。Managing Settings - Cyotek WebCopy Help

一部の情報は%APPDATA%\Cyotekに保存されます。

General

Crawl Mode
Mode  
Site Only Crawl only URL's matching the source host
Sub domains Include any sub domains of the source host
Sibling domains Include any sub domains or sibling domains of the source host
Everything (Not Recommended) Include everything. Rules should be used to control the crawl process, otherwise WebCopy may behave unexpectedly
Including sub and sibling domains - Cyotek WebCopy Help

既定ではルートURL (root URL) より上位のページはコピーされないようになっており、たとえば基本URL (base URL) が/a/のときは/a/1はコピーされますが、/b/はスキップされます。この動作はAdvancedの[Crawl above root URL (not recommended)]を有効にすることで変更できます。Crawling outside the base URL - Cyotek WebCopy Help

Download all resources

これが有効だと、外部サイトにリンクされたtext/html以外のファイルもダウンロードされるようになります。

たとえばhttp://example.com/images/sample.jpgにリンクされたファイルは、保存フォルダのimages/sample.jpgに保存されます。

これは外部サイトへのリンクを制限するだけのため、サイトの内部に対しては[Content types]で制限します。

Local Files

[Remap references within downloaded files]を有効にすると、ローカルのファイル間で参照できるようにリンクのパスが修正されます。これはすべてのダウンロードが完了した後に実行されるため、それまではファイルを開いても不完全な状態となっています。Remapping local files - Cyotek WebCopy Help

Content types

ダウンロードする、またはダウンロードから除外するファイルの種類を指定できます。Content types - Cyotek WebCopy Help

種類はtext/htmlやimage/jpegといったMIME typeで指定する必要がありますが、ウィンドウ右下の[Select Types]から選択することでも可能です。

Limits

[Maximum number of files]は保存されるファイル数の制限であり、この数を超えても処理は打ち切られず"Too Many Files"としてスキップされるだけです。Limiting downloads by file count - Cyotek WebCopy Help

[Maximum file size]の設定は、HTMLやCSSには適用されません。Limiting downloads by size - Cyotek WebCopy Help

Rules

特定のディレクトリ以下に適用するルールを作成するならば、ScanのページでそのURLを右クリックし[Exclude]を指定します。

Compareでルールを適用する対象を指定します。What is a rule? - Cyotek WebCopy Help

 
Path folder/products
Query String sort=name&order=asc
Path and Query String folder/products?sort=name&order=asc
   

Expressionは正規表現で指定します。

このルールはダウンロードから除外するだけであり、Speed Limitsが指定されているときには、ルールに一致してもリクエスト頻度の制限を受けます。

Speed Limits

リクエストの頻度を制限できます。設定は1秒または1分ごとのリクエスト数を整数で指定するため、1秒に1回未満とするには1分ごとで指定します。Setting speed limits - Cyotek WebCopy Help

[Enforce limit checks]を有効にすることで、制限を強制できます。これが無効だと処理に成功したときだけ制限されるため、アクセス過多により失敗したときは即座にリクエストしてしまい、失敗し続けることになります。Version 1.0.9.1 - Cyotek WebCopy Revision History - Copy websites locally for offline browsing • Cyotek

User Agent

これを未設定だと「The remote server is returning a 403 response for the selected user agent. Do you want to change this a default agent that the server accepts?」のように返されることがあり、これを受け入れると[CyotekWebCopy/1.9 CyotekHTTP/6.4]のような文字列が使用されます。

Advanced

Cookies

[Add]をクリックし、Cookie PropertiesのValueに必要なすべてのCookieを入力します。

個別に指定するのではなく、Set-Cookieヘッダでリクエストするときの形式とします。つまりNAME=VALUEで名前と値を対にして、複数のCookieはセミコロンで区切ります。簡単にはブラウザの開発者ツールで、要求ヘッダーのCookiesの値をコピーして用います。Cookies - Cyotek WebCopy Help

ショートカットキー

機能  
Scan Website F6
Copy Website F5
Project Properties F9
Options Ctrl+F9
   
Menu Reference - Cyotek WebCopy Help

トラブル対処法

Save folderの変更が適用されない

Save folderを変更した後にCopyを実行したときに、「Unable to copy website」「パス '***' の一部が見つかりませんでした。」として変更前のフォルダでエラーとなるときには、Projectを作成し直します。

この問題は、変更前のフォルダにアクセスできなくなっているときに発生します。メニューの【Tools → Clear Link Map】でリンクの情報を削除することでエラーを抑制できますが、その状態でダウンロードすると既存のファイルが上書きされないように*-1.htmのように名前が変更されてファイルが作成されるため、ファイルが重複することになります。

ダウンロードできない

[Result]タブのHTTP Statusを確認し、そのページへアクセスしてみます。"Too many access"のように理由を説明してもらえるならば、Speed Limitsで制限します。

Cloudflareによる制限

Cloudflareによって制限されているならばブラウザでアクセスし、アクセスに成功したときのCookieとUger-Agentをそこからコピーして設定します。Bypass Cloudflare Anti-scraping with Cyotek WebCopy + Fiddler - Rabbit Unknown

ダウンロードされていない

[Result]タブのStatusがProcessedとなっていてファイルがダウンロードされていないならば、[Errors]タブのErrorを確認します。それが「リモート名を解決できませんでした。: '***'」となっているならば、ローカルまたはリモート側のネットワークの問題です。

ダウンロードの開始時にネットワークに問題があるならばダイアログが表示され実行に失敗しますが、途中で問題が発生したときは、それが解決されるまでにアクセスしたファイルのダウンロードに失敗します。

ダウンロードの途中で処理が停止する

要求は中止されました: 要求が取り消されました

転送接続からデータを読み取れません: 接続は閉じられました。。

通信の失敗時に投げられた例外に、このソフトウェアが対処していないのが原因です。

ダウンロードの途中で停止し、ファイル間で参照されていない

[Remap references within downloaded files]によるリンクのパスの修正はダウンロードが完了した後に行われるため、途中で停止すると修正されず、ローカルのファイル間で参照されなくなります。この状態を解決するにはすべてのダウンロードを再試行するか、[Download all resources]などを無効にして必要なファイルだけをダウンロードして上書きします。

もしくはパスの修正は機械的に書き換えるだけのため、複数のファイルを一括して処理できるテキストエディタで置換します。そのときフォルダが階層化されて配置されているならば、パスの深さに注意します。

複数のダウンロードサイトから、まとめて検索