Home » January 2005 » No Follow, No Life

No Follow, No Life

一応、こんなBookmarkletも作っておきました。"nofollow"なA要素を見つけてcolorをlimeにします。 Ogawa::Hacks: Show "nofollow" bookmarklet

たかがIndexingのクオリティを上げるトリック(しかも実質的にユーザーやアプリケーションにオフロードしただけ)を10年来の技術革新と呼んでしまうのはどうかと思いますね。まあアプリケーションベンダーがYesと言っているのだからいいのだという言い方もできますが、この調子でやっていればMachine writableだけどHuman writableでないHTMLの拡張仕様が出来上がってしまいます。

ITmediaニュース:Googleなど、リンクスパム対策に乗り出す――「ノーフォロー」タグを導入へ

最近のネタだとTechnorati Tagsあたりも結構怪しいと思っています。Technorati TagsではA要素のrel属性の名前空間を実際「無制限に」「混沌と」使ってしまいます。A要素やLINK要素のrel属性というのはそもそもリンク先の当該文書に対する「関係」を記述するものであって、一般的な「アノテーション」を記述するものではなかったはずです。スタイルシートを示すLINK要素に対して「rel="stylesheet"」と付記するように「ごく秩序立って」利用されてきたはずなのですがね。

そういうわけで将来この属性を使ったまともな拡張ができなくなる可能性もあるでしょう。Google他が「rel="nofollow"」とか言い出したのは、この名前空間を自分たちの都合のいいように早いうちに予約してしまった方がいいんじゃないか、という判断が働いているように思えます。

同じ仕組みを使って、Webブラウザがrel="nofollow"のリンクにアクセスするときにはRefer(r)erを渡さないようにすることも可能ですが、そちらの方が技術的にも社会的にも重要な意味があります。と言うよりもですね、こういう仕様を標準化してWebブラウザにあまねく採用していただき(いやまあそれは無理だとして仮に採用されなかったとしても提案・標準化したことには意義がある)、その仕様を(不肖Google、Yahooも)Indexingに流用させていただきます、という話の方が筋が良いと思います。話としてアサマシクなく、むしろスガスガシイです。

と書きながら自分でもアサマシクも"nofollow"を指定したりしているわけですけれど、私が対象にしているのはPing URLへのリンクだけで、それ以外のところに指定するとリンクの意義を損ないかねないと考えています。ですが、そういう思惑とは逆にと言うか無関係に、安直に指定してしまう人が増える気もしています。特にプラグインはその傾向を加速しがちですよね。つまるところ、お互いにリンクの効果を弱め合うチキンレース(?)の始まりだとも言えます。ブログはリンクの効果が強すぎたのは確かで、だからこそスパマーにも付け狙われやすくもあり、この時点で多少是正される方がよいのかもしれません。が、残念ながらこれはみんなで不幸になるレース、あるいは胴元だけが儲かる博打です。

つまりですね、サーチエンジンやポータルは、それを支える技術やマネーの規模がいつの間にやら増大し、淘汰が進み、ほとんど寡占が完成しつつある状況です。しかもそれらは広告料を主収入としているわけです。いずれこのシステムはテレビや新聞同然(ビジネスモデルはすでに同然です)となるでしょう。あなたが自分のブログにAdSenseを付ける時、それは二次広告収入というメリットをもたらすかもしれませんが、広告の製品やサービスに対してネガティブなことを書けば広告が表示されないように「技術的には」できますし、サーチエンジンのインデックスから削除することも「技術的には」できます。それが嫌なら製品やサービスの宣伝をするしかありません。つまりあなたは『Googleテレビ』の出演者・制作者になったのです。そしてまた今、あなたはスパムコメントが減るという餌に釣られていますが、これは一義的には検索結果の質を上げる(=広告の効果を上げる)ための意味しかありません。「立ち位置をもう少し右にすると画面映りが良くなるよ」という甘言の裏に「そこに立たれたままだと後ろのスポンサーの文字がよく見えない、スポンサーが煩いから何とかしろ」という意図があることに出演者はなかなか気が付かないものなのでしょうか。

さて、もう一度身近な経験を元に自問してみるとよいでしょう、

『スパムフィルタリングを施したからと言って、
 自分のところに送られるスパムメールが本当に減ったのか?
 減ってないとしたら誰が儲かったのか?』


おまけですが、Movable TypeのNofollow pluginを作ろうとしていたのですが、先越されてしまいましたー。しかし、ダイナミック・パブリッシング用のプラグインが私のところでは正常に動きません。

Movable Type Publishing Platform: Movable Type 'nofollow' plugin

コメント欄にも書いてありますが、MTPingsコンテナタグ内部に対する処理が怪しいです。これはちょっと考えたら理由が分かりました。

なぜなら、Nofollow pluginの処理ではまずサニタイズを行い、その結果生成物に対してrel属性を追加しているからです。この前処理のサニタイズでは、Sanitize Specで示されたルールに従ったタグおよび属性しか通過させません。

サニタイス: 入力された文字を安全に

ですから、MTPingsコンテナの内部にこのルールにマッチしない要素が含まれれば、そのタグ部分は除去されます。デフォルトでは、A要素に対してはhref属性だけを通過させることにしていますから、そのままではname属性やrel属性、title属性を通過させることができません。また、やはりデフォルトでは<br />は通過しますが、<hr />は通過させません。そういうわけでユーザーに自分の要求にミートするようなSanitize Specを定義しなくてはならないわけです。

基本的にはMTPingsコンテナ内に何を書くかはユーザーの自由ですし、それにミートするようなSanitize Specを指定したとすれば、それは結局「サニタイズ」として意味があるのかしら、と思います。もう少し説明を加えると、下の赤い部分の方が青い部分よりハードな制約が必要なはずですが、実際には同じSanitize Specが適用されるということです。つまり、赤の部分に合わせれば青の部分の記述力が制約されますし、青に合わせれば赤への制約としては意味がないでしょう。

mtpings-container.gif

追記:
よく考えたら、MTPingTitle、MTPingURL、MTPingBlogName、MTPingExcerptには予めサニタイズがかかっているじゃないか。だから上の図で赤の部分に危険なコードは含まれない。ということは、危険があるとしたら青い部分であってMTPingsをまるごとサニタイズするのはまったく意味がない。

したがって、nofollow.plの27行目あたりにあるtags_to_filterのPingsの行をコメントアウトした上で、テンプレートのMTPingsの部分に以下のどちらかの修正を加えればよい。

<MTPings nofollowfy="1">
<p id="p<$MTPingID$>">
&raquo; <a href="<$MTPingURL$>"><$MTPingTitle$></a> from <$MTPingBlogName$><br />
<$MTPingExcerpt$> <a href="<$MTPingURL$>">[Read More]</a>
</p>
<p class="posted">Tracked on <$MTPingDate$></p>
</MTPings>
<MTPings>
<p id="p<$MTPingID$>">
&raquo; <a href="<$MTPingURL$>" rel="nofollow"><$MTPingTitle$></a> from <$MTPingBlogName$><br />
<$MTPingExcerpt$> <a href="<$MTPingURL$>" rel="nofollow">[Read More]</a>
</p>
<p class="posted">Tracked on <$MTPingDate$></p>
</MTPings>

このエントリーのトラックバックURL: http://as-is.net/mt/mt-tb.cgi/229

Links referred to this entry

Comments (10)

  1. いつもお世話になっております。
    2005/1/18 公開された plugin "nofollow" release 1.0 をインストールしたら、インライン 要素 A のタグ内で、href属性は問題ないようですが、name属性の内容(たとえば、位置や$MTPingID$) が完全に消えてしまいました。スクリプトのバグではないでしょうか。TB いたしますので、ご教示お願いいたします。先ほど、http://as-is.net/blog/archives/000945.html に同文を投稿,TBいたしましたが、こちらのエントリーでご回答いただければ幸いです。

  2. ざらっとソースを見た限りでは、href属性のないA要素では仰るような問題がありそうですね。しかし、href属性のないA要素は他の記述の仕方(他の要素のid属性として記述する)もできますから問題自体を回避することはできますよね。

    他の要素も消されてしまう可能性があります。<hr />とか、やってみていないので分かりませんが。まだ普通に使うにはコードクオリティが低いようです。

  3. コメントありがとうございます。実は、関連性があるか不明ですが、class要素(1つだけでしたが)もソース表示すると、消去されていました。ブラウザで標準化していない要素や属性というのは、当然β版のようなものですが、特に英語圏での comment spamの猛威も充分理解できます。どのようなタグ要素・属性が消えるか、もうすこし調べてみます。今後ともよろしくお願いいたします。

  4. プラグインは、MTCommentBody、MTAuthorLink、MTPingsを自動的に変更します。このうち、前の2つは変数タグで、最後のだけはコンテナタグです。このコンテナタグへの変換がおかしいわけです。なので、まず、27行目あたりに定義されているtags_to_filterのPingsの行をコメントアウトします。これでMTPingsへの変更が無効になります。

    そうした上でトラックバックのリストの部分は以下のような感じにするとよいのではないでしょうか。

    <MTPings>
    <p id="p<$MTPingID$>">
    &raquo; <a href="<$MTPingURL$>" rel="nofollow"><$MTPingTitle$></a> from <$MTPingBlogName$><br />
    <$MTPingExcerpt nofollowfy="1"$> <a href="<$MTPingURL$>" rel="nofollow">[Read More]</a>
    </p>
    <p class="posted">Tracked on <$MTPingDate$></p>
    </MTPings>

  5. [MT]⁄plugins⁄nofollowfy.pl の27行目のコメントアウト
    # Pings => [1, \&MT::Template::Context::_hdlr_pings]};
    後、php生成でなければ、name属性は復活し、トラックバックのリストの部分の変更も不要のようでした。
    php生成時では、
    [MT]⁄php⁄plugins⁄init.nofollowfy.php の編集が必要ですが、
    コンテナタグは、11行目でしょうか? たとえば、
    # $ctx->register_block('MTPings', 'mtpings_nofollowfy');
    としても、name属性は復活しませんでしたので、トラックバックのリストをご指摘のように id要素を使用し編集しました。rel="nofollow" は必ず自動作成されています。恐れ入りますが、
    init.nofollowfy.php の改変について、再度ご教示お願いいたします。

  6. 逆にうちではダイナミックパブリッシングでは、MTPingsへの変換が有効にならないんですよ。<p id="p<$MTPingID$>">とか追加しても何も起きません。ついでに明示的にnofollowfy="1"を追加しても何も起きず。なんなんだろうなあ、これは。

    邪魔くさいので私は削除しました。

    ちなみにtemplates_cの下にできているファイルを一旦消した方がよいですよ。

  7. Google, MSN, Yahoo, Six Apart社(TypePad, MovableType, LiveJournal), WordPress などが Release 1.0 版からバージョンアップしないでこのまま利用・PRし続けることはないでしょうから、私も一旦アンインストールします。ありがとうございました。

  8. 世界の spam 対策にできるだけ協力したいので、いろいろ問題がある plugin "nofollow" Release1.0 で自動化するのではなく、MTの各 Templates をみて、TrackBack, Comments などの Ping に関連するタグは、とりあえず 手作業で、
    <a href="<$MTPingURL$>" rel="nofollow">
    <$MTPingExcerpt nofollowfy="1"$>
    などと属性を追加することに決めました。

  9. 初めまして、昨日、six apart Pronetで書き込みがたくさんあったので、読んでいたら、小川さんのお名前を見つけました。わたしはビジネスブログの研究をしているのですが、こちらのサイトもたくさんの情報がありますね。

  10. いやー、勘違いメールだったのでお恥ずかしい。ときどき技術的に不明確なことがあったら書き込むようにしています。
    ProNetの議論は、「"nofollow"万歳!!」がコンセンサスになりそうだったら流石に強めの意見を書いてやろうと思っていましたが、だいたい正しい感じに着地しそうでよい感じです。

Post a comment

Remember me?