じゃあどうすればいいのか
こういった不正対策は基本的にいたちごっこでしかありません。対策されたことの対策をしてくる。諦めるのが早い。 と、いうのもあれなので悪あがきしましょう。 「拒絶する」ことを選ぶことはメリットがありますが、デメリットもつきまとってきます。 全てを拒絶するのは最終手段で、ここはホワイトリスト方式かブラックリスト方式で対策します。ホワイトリスト方式で拒絶
ホワイトリスト方式とは、一部の条件下だけ許す方法。 自分のサイトだけ許すのもホワイトリスト方式ですね。それ以外にも例えばFeedlyなど有名なサービスだけ直リンクを許可するわけです。ブラックリスト方式で拒絶
ブラックリスト方式とは一部の条件下だけ拒絶する方法。どこからのアクセスかがわかる場合はこれも有効。ホワイトリスト方式では本来必要とするアクセスまで拒絶してしまう可能性がありますが、ブラックリスト方式ならその心配はありません。 しかし相手が条件を変えるとブラックリストから逃れられるため攻撃する側の対策も簡単。 そのため相手の対策にあわせて、こちらも対策・・・を繰り返します。熱い攻防戦が楽めてオススメです。最初はブラックリストから
かなり手間ですが最初はブラックリスト方式で、どうしようもなくなったら方式を考えなおすのがオススメ。画像以外のコンテンツを防ぐには?
画像へのアクセスを拒絶できても、これから更新される未来の記事の文章はパクられ続けてしまいます。 文章の転載も拒絶できればいいですが、これがなかなか難しいところ。 転載コンテンツがどういった仕組みで動いているかを考えないといけません。 冒頭で書いた転載コンテンツを例にあげてみましょう。相手の仕組みを知る
冒頭であげた転載サイトは、礼儀正しくどうやって記事をコピーしてるかの痕跡を残していました。 そこから推測するに、http://fullrss.net/を利用して、RSSフィードからコンテンツをコピーしていたようです。 fullrss.netは名前の通り、本文が省略されているRSSフィードでもURLを辿って全文を取得してくる厄介なツール。 RSSフィードの配信をやめれば転載を防げますが、それをしてしまうとRSSリーダーで読めなくなってしまいます。 こういった時はブラックリスト方式が有効です。 特定のサービスでのみRSSフィードを読み込めなくします。 こういったスクレイピング(データの一部を取得する)ようなサービスは、人間が手作業で転載しているわけではなく、指定されたサイトのRSSフィードをクローラーと呼ばれるロボットが読んで情報を盗んでいくものが多い。 行儀の悪いサービスがあればそのクローラーを拒絶すればいいのです。 公開されているサービスなら自分で試してみて、どんなクローラーがどこからきているか調べられます。fullrss.netブロックしてみよう
fullrss.netの場合はwww1090gj.sakura.ne.jpという場所から、fullrss/0.01 (+http://fullrss.net/; like FeedFetcher-Google)というクローラーがやってきます。この条件できたものを拒絶します。 せっかくなのでWordPressでやってみましょう。 こう。function fullrss_fil($cnt) { return 'プギャ━━━━━━m9(^Д^)━━━━━━!!!!!!'; } if(strpos($_SERVER["HTTP_USER_AGENT"], 'fullrss/') !== false) { add_action('the_content', 'fullrss_fil'); }fullrssという情報をもつクローラーがやってきたら、すべての記事の本文がプギャ━━━━━━m9(^Д^)━━━━━━!!!!!!になる。 転載コンテンツとはいえせっかく見てくれたユーザーのために元記事へのリンクもつけてます。 こうすればfullrss.netを利用して転載しているサイトの対策ができたはず。たぶん。このブログは転載されるような有益なブログではないので検証できてません。
※追記 WordPressで高速化などキャッシュ系プラグインを導入しているとキャッシュが優先されてしまい、想定した動作にならない場合があります。
ついでに似たようなサービスも対策できるように
fullrss.netが使えなくなったら、向こうはどうしてくるでしょうか?きっと似たようなサービスを探してそれを使うはず。なのでこちらも似たようなサービスを探して対策しましょうか。 ざっと検索して見つかったのがこちら- http://fulltextrssfeed.com/
- FeedWordPress
- http://www.wizardrss.com/
fulltextrssfeed.com
fulltextrssfeed.com は少し重たいですが、一応動いていますね。 li65-206.members.linode.com という場所から、FTRF: Friendly robot/1.3 というクローラーがやってきます。 さっきのコードにこの情報を適当に追加すれば対策完了です。FeedWordPress
FeedWordPressはWordPressのプラグインです。プラグインなので簡単に改造できるためあまり効果は期待できませんが、一応追加しときましょうか。FeedWordPressはfeedwordpressというクローラーでやってきます。 どこからやってくるかはWordPressの置かれているサイトからやってくるので無限にあります。 こいつはfeedwordpressの文字をブロックすればokですね。wizardrss.com
wizardrss.com はというと・・・場所やクローラーの名前が一切わからないようになってました。 クローラーで身分を明かさないのは普通のサービスならやりません。これはブラックリストにいれにくくするためにやっているものかと。 こうなったら、RSSフィードに正体不明のアクセスがあったら拒否するようにしてみます。function fullrss_fil($cnt) { wp_die( __( 'RSSフィードにアクセスがあったときは、do_feed()が呼び出されるはずなので、もし正体不明のアクセスがあればそこでシャットアウト。となるはずでしたが、なぜかdo_feed()が呼び出されませんでした(‘A`) もしdo_feed()が動かない時は、get_permalink()なりですべてのURLを見せなくするとかした方がいいかもしれません。Feed not available, please visit our Home Page!
')); } if($_SERVER["HTTP_USER_AGENT"] === '') { add_action('do_feed', 'kill_rss', 1); }
ピンバック: 「直リンク呼び出しとRSS取得のお話 | アンギス」をメモ | ウェブシェフ(uzziy)
ピンバック: 【WordPress】びっくりするほど簡単!数秒でパクリサイトを作る方法と対策 | 実ニキビシイ対策 – ENJIOUT