国立国会図書館にWebサイトをクロールしてもらうときrobots.txtにどう記述するか

先日、国立国会図書館の収集ロボットにWebサイトをクロール(いわば丸ごとコピー)してもらう機会がありました。

対象になったのは、2011年3月に当ブログから独立させた「東日本大震災」関連の記事サイトです。 

震災直後の避難統計など公共性が高い内容が含まれているためですが、個人で管理できなくなった場合に備えて、国立国会図書館にクロールを続けてもらっています。(民間サイトなので同意書を提出。現在は電子書籍の納品と同様の手続きを取っています)

クローラーといえば、Googleの検索クローラーといった有益なものもありますが、近年は特に海外から不審なのがいっぱい来るので、避ける方法を以前から書いてきました。今回はその逆バージョン(迎え入れる編)です。

いろいろ調べたのだけど、今回の件については当然ながらあまり情報がありませんでした。あまりにもマイナーな話なので書くかどうか迷いましたが、いつかどなたかの参考になればと残しておきます。(以前から公立図書館や官公庁のHPで設定の必要性が問題になっているようです。) 

早見表(最低これだけでいい)

・robots.txtを設置していない場合⇒なにもしないでOK。

・robots.txtを設置している⇒次の2行をどこでもいいのでrobots.txtに追記する。

User-agent: ndl-japan
Disallow: /* コロン(:)の後ろに何も記述しないのがポイント */

 

出典:国立国会図書館法によるインターネット資料の収集について (国立国会図書館 最終更新: 平成28年11月)

ndl-2

まずい例(注意喚起のため書きました)

User-agent:*
Disallow: /  /* この2行は書かないで!!(全てのクローラーを拒否する意味になるため) */

User-agent: ロボット名
Disallow: 

ndl-1

これ、私が全くの初心者だったら、コピペして使ってしまいそうです。

この件は、2010年08月11日付のブログで指摘されている方がおられました。記事の目次を引用させていただきます。
技術的な話は知らなくても読めますので、ご関心のある方はぜひ。

  • /robots.txtで自ら姿を隠す公共図書館
  • 国立国会図書館法第25条の3第2項に違反
  • 国会図書館が公共機関のWebサイトを消滅させる虞れ

国会図書館の施策で全国の公共機関のWebサイトが消滅する 岡崎図書館事件(5)
http://takagi-hiromitsu.jp/diary/20100811.html

 

国立国会図書館の取り組み

当記事は国立国会図書館の収集ロボットにどう協力するかを主眼に書いたもので、問題点の指摘が目的ではありません。

国立国会図書館さんの続けている地道な取り組みについて、ご紹介しておきます。
技術的な話は知らなくても読めますので、ご関心のある方はぜひどうぞ。

インターネット資料収集保存事業(WARP)の10年とこれから

 

従来からのrobots.txtにどう追記するか(Allowが効かない国立国会図書館の収集ロボット対策)

対象サイトでは、robots.txtを設置していました。困ったのは、画像とCSS(レイアウト)が国立国会図書館の収集ロボットには当初収集できなかったことです。

Googleの検索クローラーでは通用する記述が、国立国会図書館の収集ロボットには通用しなかったためです。

というのも、国立国会図書館の収集ロボットには「Heritrix」が使われています(2018年11月現在)。

収集ロボット Heritrix(最終更新日:2015/2/23)|国立国会図書館

このHeritrixは正規の文法でないと通用しません。Googleの検索クローラーでは「Allow(許可する)」が使えますが、Heritrixは「Disallow(許可しない)」しか読み取れないのです。何のことか???な話なので、以下をご覧ください。

 

robots.txt

下記のrobots.txtは、WordPressを使っている人ならよく目にする内容です。緑字の箇所ですが、よくよく見ると論理的にはおかしいですよね。

「Disallow(許可しない)」というwp-includesの中に「Allow(許可する)」wp-includes/css/wp-includes/js/が入っているのですから。

けれど、Googleの検索クローラーではこれを理解してくれるのです。これと両立させることが鍵でした。

 

User-agent: *
Disallow: /blog/wp-login.php
Disallow: /blog/wp-admin/
Disallow: /blog/wp-includes/
Allow: /blog/wp-includes/css/  /* CSSは許可 */
Allow: /blog/wp-includes/js/  /* javascriptは許可 */
Disallow: /blog/wp-content/
Disallow: /blog/*.php$
Disallow: /*.jpg$ /* 画像検索除けのための記述です */
Disallow: /*.JPG$
Disallow: /*.png$
Disallow: /*.webp$

User-agent: ndl-japan
Disallow: /* この2行を記述することで対処できました */

User-agent: Googlebot
Allow: /blog/wp-content/

User-agent: Googlebot-Image /* 画像検索除けのための記述です */
Disallow: /blog/wp-content/
Disallow: /*.jpg$
Disallow: /*.JPG$
Disallow: /*.png$
Disallow: /*.webp$

User-agent: Twitterbot  /* Twitter投稿で画像を表示させるため */
Allow: /blog/wp-content/

User-Agent: AhrefsBot /* 海外から来る収集クローラー除けのための記述 */
Disallow: /

User-agent: TweetmemeBot /* 海外から来る収集クローラー除けのための記述 */
Disallow: /

User-Agent: 360Spider /* 海外から来る収集クローラー除けのための記述 */
Disallow: /

Sitemap: https://example.com/sitemap.xml

 

その他のrobots.txt記載例

国立国会図書館の収集ロボットでも入ってほしくない場所がある場合に「Disallow」指定できます。例えばhttps://example.comというサイトのhttps://example.com/secret/を除外したい場合。

User-agent: ndl-japan
Disallow: /secret/

 

改行すれば複数指定することもできます。例えばhttps://example.com/secret/とhttps://example.com/diary/を除外したい場合。

User-agent: ndl-japan
Disallow: /secret/
Disallow: /diary/

 

robots.txtの作成とサーバーへのアップロード方法は下記でご紹介しています。

初めてのワードプレス(16)検索に表示したくない画像がある場合の対処法(robots.txtの作成と設置方法)

 

参考になるサイト

robots.txtの除外を避ける|Archive-Itヘルプセンター
良記事。海外サイトですが、こちらで翻訳にかけてあります。
コロン(:)の後ろに何も記述しないDisallow:がむしろ文法的に正しいと分かります。

robots.txtでAllowを使うのはどんな時?|海外SEO情報ブログ
「Allow(許可する)」の理解のために。分かりやすい解説記事です。