目次 | CGIレスキュー | 免責・問合
  ブログ(Blog)のトラックバック(Trackback)考察

(株)友林堂
(株)友林堂



トラックバックって何?

ブログが流行している昨今、 その魅力のひとつであるトラックバックについて調査してみた。 ブログの機能の1つとして存在し、ブログが流行したことにより多くの人が知ることになった「トラックバック」ですが、 リンク元サイトに「このような記事からリンクを張った」という情報を通知する仕組みです。当然、統一された仕様があってこそ実現した仕組みである。

まずは重要な前提として次の行為はしないよう記しておきたい。 「相手にリンクさせて自分ではリンクしないことはマナー違反」であるとされ、 「記事と関係のないトラックバックをつける行為は迷惑」であり、これらを「トラックバックスパム」と呼ぶ。


トラックバックの仕組み(受信)

送信元→受信先へ送られるトラックバックを「トラックバック・ピング(trackback ping)」といい、 その通知アドレスを「トラックバックURL(trackback URL)」といいます。

● トラックバックURLには、クエリー(URLの後に?マークで区切り、KEY=VALUE形式を&マークで区切って羅列したデータ)で次の4つの情報(これらがKEYとなる)がURLエンコード付加されて送信されます。

blog_nameブログ名
excerpt記事の要約(一般的には冒頭100〜200バイト程度)
url固定リンク(その記事のURL)
title記事の題名

このとき、トラックバックURLにクエリーがあれば、そのままトラックバック・ピングされます。 なお、すべてのトラックバックでそうなるかどうか、仕様上の取り決めは不明。ココログ(@niftyのブログ)では確認済み。

例)トラックバックURL
http://foo.bar/trackback/543513684351351351

受信するデータの例)
http://foo.bar/trackback/543513684351351351?title=%E3%83%88%E3%83%A9%E3%83%83%E3%82%AF%E3%83%90%E3%83%83%E3%82%AF%E3%81%A7%E3%81%AF%E4%BD%95%E3%81%8C%E9%80%81%E4%BF%A1%E3%81%95%E3%82%8C%E3%81%A6%E3%81%84%E3%82%8B%E3%81%8B%E3%81%AE%E8%AA%BF%E6%9F%BB url=http%3A%2F%2F******.cocolog-nifty.com%2F******%2Fpost.html excerpt=%E3%83%88%E3%83%A2%E3%81%AE%E8%88%AA%E6%B5%B7%E6%97%A5%E8%AA%8C blog_name=%E3%83%88%E3%83%A2%E3%81%AE%E8%88%AA%E6%B5%B7%E6%97%A5%E8%AA%8C

あとは、これをURLデコードして各項目を取り出せばOK。 処理に必要な文字コードに変換。 各項目の文字数は送信側が調整するのか仕様がどうなっているかは不明だが、 一般的には記事の冒頭100〜200文字が使われることが多い。 どんな量のデータが送られてくるかわからないことを前提とするならば、受信側でチェックすることが望ましいだろう。

この形式で受信が完了したら、こちら側にリンクする処理を行い、処理結果を送信元にXML形式で通知します。 成功したら 0 を、失敗したら 1 を通知します。ただ、ココログで実験したところ、故意に 1 を返しても、 成功したトラックバック一覧に記載されてしまいました。以下は成功 0 を返した例。

Content-Type: text/xml

<?xml version="1.0" encoding="iso-8859-1"?>
<response>
  <error>0</error>
  <message></message>
</response>


トラックバックの仕組み(送信)

トラックバックを送信するには、受信で必要な4つのデータをクエリーに付加してPOST送信します。 GETによるping送信は廃止されたようですので、まだ使える場合であってもPOSTに変更した方がいいようです。 はユニコード UTF-8 にコード変換して送信します。 残念なことに jcode.pl にはユニコード変換機能がありません。 Jcodeをサーバに組み込むか、 simaguni.plを利用することになります。

例)トラックバックURL
http://foo.bar/trackback/543513684351351351

送信するデータと、相手から返ってきた結果の例)
Location: http://foo.bar/trackback/543513684351351351?blog_name=ブログ名&excerpt=要約&url=固定リンク&title=記事の題名
(改行)
(改行)
<?xml version="1.0" encoding="iso-8859-1"?>
<response>
<error>0</error>
<message></message>
</response>


参考文献

http://lowlife.jp/yasusii/stories/8.html


Powered by CGI RESCUE(R)