pslaboが試したことの記録

はてなダイヤリーからはてなブログに引っ越してきました

この日記は現在実行中の減量記録を含む個人的なメモとして始めましたが、最近はコンピュータやガジェット、ハック、セキュリティネタのほうがメインになっております。

はてなダイヤリー時代はカテゴリ分けが適当だったのですが、これはそのうち直します。


SORDのPIPSが2020年11月で公開終了となるらしいので、サイトコンテンツのバックアップを試みる

SORDの簡易言語PIPSで構築されたアプリケーションの今後のメンテナンスについて相談を受けている件の調査のために https://www.sord.co.jp/archives/pips/ にアクセスしてみたら、2020年11月でPIPS関連のページを公開終了する旨が表示されていたので、コンテンツをローカルにバックアップする方法を試みた際の記録です。

バックアップ方法

今回は wget を使用します。

ただし。単に wget -r -np で一括取得を試みると失敗することがわかったので、それを回避するために次のディレクリと空ファイルの作成を行っておきます。

mkdir -p www.sord.co.jp//archives/pips/sitemap/
mkdir -p www.sord.co.jp//archives/pips/tool/index2.html
touch www.sord.co.jp//archives/pips/sitemap/index.html
touch  www.sord.co.jp//archives/pips/tool/

wget は次のオプションをつけて実行します。

wget -c -nc -np -w 1 --random-wait -r https://www.sord.co.jp/archives/pips/

なぜこのような方法が必要なのか?

www.sord.co.jp のサイトを単純に wgetミラーリングしようとすると途中で失敗しました。しかも、その後しばらくアクセスできなくなリました。そこでインターネット接続を固定回線からスマートフォンでのテザリングに切り替えてみたものの、同じ現象が発生しました。この理由は、おそらく次のような設定が行われているためだと考えられます。

  1. 同一IPアドレスのクライアントから短時間に多数のリクエストをかけると、そのクライアントのIPアドレスからのアクセスをブロックする
  2. 404 Not Found が発生すると、そのクライアントのIPアドレスからのアクセスをブロックする

1 への対策は、Webサーバにリクエストを送る頻度を適切に下げることです。このために -w 1 --random-wait の2つのパラメータを指定します。

2 への対策は、ミラーリング操作による取得を試みた際にリンク切れしているURLへのアクセスを抑止することです。このために、リンク切れしているページと同じファイル名のファイルを保存先に予め作成しておきます(mkdir, touch)。また、すでに取得済みのコンテンツは再取得しない(-nc)ように指定します。さらに、ダウンロードを始めるURLよりも上位側のコンテンツへのリンクを無視し(-np)、必要最小限のファイルだけをミラーリグします。

このようにして wget を別のモバイル回線で実行したところ、ミラーリングの操作でブロックされることなくダウンロードを進めることができました。