【無断転載対策】ブログ記事をパクらせないための対策を仕込み、ようやく転載されなくなった

更新日: 公開日:2015/09/11
フィード情報を元に転載している根本的な原因を発見

このサイトとは別に運営しているブログ NJ-CLUCKER の記事が無断転載されていることに気付いたのが、今から 2週間前です。

運営者に直接連絡する術も無く、直リンクの画像を入れ替えてみたり、無理矢理スクリプトファイルを埋め込んで、それごとパクらせて正しく画面表示出来ないようにする等、小手先での対応を行ってきましたが、ようやく転載されないように制御することができたので、その最終報告となります。

これまでの経緯は過去の記事をご覧ください。

ブログ記事がパクられた
ブログ記事がソースごと丸パクリされる悲しい出来事があったので対策してみました
2020 東京オリンピックのロゴのパクリ問題が熱冷めやらぬ昨今ではありますが、当ブログもパクリ被害にあう事件が起こってしまいました。たまたまこのブログの記事の検索順位...
パクリ記事の対策
【パクリサイト対策】投稿内に対策用の Javascript を仕掛けておいたら、予定通り丸パクリしてくれた
以前のエントリーで、ブログの投稿内容が関西弁に変換され top-news.red に丸パクリされ無断転載しているとお伝えしましたが、その続報になります。 ...

RSS フィード情報を変更して様子を見た

このサイトは WordPress で運用しているのですが、以前までフィードの設定を全文表示にしていました。一度、抜粋に変更してみたところ、そのまま抜粋された内容が転載されることが判明し、RSS や Atom のフィード情報を元に投稿する仕組みが存在するのを確信しました。

WordPress のフィードは投稿内容を更新しないと切り換わらない

WordPress でフィード情報を全文から抜粋へ変更する方法は次の通りです。

[設定] → [RSS/Atom フィードでの各投稿の表示] から「抜粋のみを表示」を選択

ただし設定を変更した直後は全文のままなので、記事を更新してフィード情報が再出力されると内容が抜粋に変更されます。

ちなみに僕は functions.php を編集することで、抜粋表示から more タグを挟んでいる前半部分だけを出力するように変更しました。

WordPress Feed 出力内容をカスタム
WordPress のフィードをカスタマイズして more タグまでの内容を出力し、元記事へのリンクを追加する方法
WordPress の RSS や Atom のフィード情報の設定は、「全文を表示」または「抜粋のみを表示」の二択しかありません。 以前、RSS からブログ記事...

抜粋でもそのまま転載されるのは許容できない

「抜粋だから転載されてもいい」なんてことはありません。記事としてそのまま載っている以上、放置するわけにはいきません。ただ黙って見過ごすのも嫌なので、この際だから勝手にパクってくれるのを利用して、あれこれ実験してみることにしました。

実際に試した仕返し

記事内に無限ループする処理を仕込む

実際にページを開いた人にはやさしくない処理です。前回紹介した JavaScript の仕掛けを応用したものです。

パクリ記事の対策
【パクリサイト対策】投稿内に対策用の Javascript を仕掛けておいたら、予定通り丸パクリしてくれた
以前のエントリーで、ブログの投稿内容が関西弁に変換され top-news.red に丸パクリされ無断転載しているとお伝えしましたが、その続報になります。 ...
記事内で無限ループ
<span id="unkosite2"></span>
<script>
// ホスト名で処理を走らせるか判断しています
if(location.hostname == "top-news.red") {
  while(true){
    document.getElementById("unkosite2").innerHTML+="んこう";
  }
}
</script>

「んこう」が連続して出力し続けるようになります。「んこうんこうんこう・・・」みたいに。ただ無限ループだと、画面が真っ白になってフリーズしてしまったので、ループ回数を 10,000回にして仕込み直したところ、見事に仕掛けが成功して、画面が大変なことになってしまいました。その画面がこちらです。

ループ処理が実行された画面

おそらく表示確認も行っていないのでしょうね。我ながら酷い仕掛けなのは分かっています。ひとまずこの実験は、これで成功なので次へ。

大きいサイズのファイルをアップロードする

ソースコードを眺めていたら、唯一トップ画面に掲載する画像のみ自前でアップロードしているのが分かりました。一枚目のアイキャッチ画像を取得しているようなので、一時的に大きいサイズの画像をアップロードさせ、常にその画像を読み込むような仕組みにしました。

最初 3Mbyte 程度の画像ファイルで試したところ上手くいったので、20Mbyte と一気に増量してみたのですが、そちらは失敗してしまいました。成功したら、延々とサイズの大きいファイルをパクらせてアップロードし続けるように仕込むつもりだったので残念です。

意味のない酷い文章を投稿する

僕のサイトは固定読者が居ない弱小サイトなので試せる手法です。酷い文章の中身は秘密です。(笑) 単純にこのブログ上に投稿して、転載されたのを確認したら消すだけ。

しかし、一時的でも転載される間にうっかりインデックスされてしまうと困るので、そこはインデックスされないように、カスタムフィールドを利用して仕掛けを仕込みました。

WordPress
WordPress の noindex nofollow の制御をページ単位にカスタムフィールドを利用して設定する方法
WordPress の個別投稿ページや固定ページにおいて、SEO の面で状況により検索エンジンのロボットに対象のページをインデックスして欲しくない場合や、リンクを辿っ...

こんな文章でもパクっちゃうのか、と思ってしまうような内容でした。自分のサイトにも記事の内容が掲載されてしまう方法なので、リスクを背負った実験でしたが、これはただの自己満足として成功したと言えます。

どのように記事をパクっていたか仕組みが判明

WordPress のプラグイン FeedWordPress の痕跡を見つける

仕返し案も尽きたので、最後の対策方法を練るべく Web サーバーのアクセスログを眺めていたところ、気になるログを見かけました。

以下のログの IP アドレスはダミーです。

192.168.11.156 - - [06/Sep/2015:04:50:03 +0900] "GET /feed/ HTTP/1.0" 200 3029 "-" "FeedWordPress/2015.0514 (aggregator:feedwordpress; WordPress/4.2.4 + SimplePie/1.3.1; Allow like Gecko; +http://feedwordpress.radgeek.com/) at top-news.red"

Apache のアクセスログの読み方が分からない方は、こちらを参照してください。

Apache アクセスログ
Apache の Web サーバー アクセスログの記載内容の読み方を理解してログ解析しよう
WordPress を使った一般的なホームページのような Web サイトの作成や Web システムを運営していく上で、何か問題が起こった時にアクセスログを解析すること...

おかしなユーザーエージェント情報だったので、調べてみると WordPress のプラグイン FeedWordPress を利用していることが判明しました。この FeedWordPress は RSS 等のフィード情報を元に、WordPress 上へそのままコピー投稿出来てしまうとんでもないプラグインなのです。

FeedWordPress はアンテナサイトを簡単に作れるプラグインとして紹介されるケースが多いです。しかしその機能を悪用すれば、今回僕が被害にあったように、記事を丸ごと転載することができてしまうのです。

パクった記事は投稿前に下書き状態で止まっている?

単にフィードの内容を丸パクリしているのではなく、関西弁へ変換する姑息な手段をとっている同サイトですが、おそらく FeedWordPress から登録されたデータは下書き状態で止まっていて、機械的に関西弁への変換処理を噛ませてから投稿しているのが推測されます。

エントリー内の記事は関西弁ですが、トップページに表示されている概要はパクリ元の記事のままなので、段階的に処理されているのは間違いありません。

FeedWordPress を利用するとどうなるか、ENJI さんのブログに具体的に試した例が掲載されています。

【WordPress】びっくりするほど簡単!数秒でパクリサイトを作る方法と対策

仕組みが分かったら対策するだけ

さあ、いよいよ最終段階です。仕組みが分かればこっちのものです。プラグインによりデータを取得しているのであれば、パクリ元サイトから直接アクセスしているので、その IP アドレスを拒絶してしまえば OK です。

IP アドレスでのアクセス拒否はデメリットあり

.htaccess ファイルに該当の IP アドレスからアクセス拒否を設定すれば、もうフィード情報を読み込まれる心配は無くなります。しかし共有サーバーを利用していると、同じ IP アドレスを利用している他のユーザーにも影響を及ぼしてしまいます。

ただ。外部からのアクセスを受け入れるようにしておく必要性もないため、その影響は皆無といっても良いかもしれません。

とは言え、完全に影響がないと断言できる自信もないので、限定的な対策を取ることにしました。

特定の IP アドレスからのフィード取得を拒否する

アクセス元の IP アドレスに対して、フィードのアクセスだけ拒否する。他に名案が思いつかなかったので、暫定的な施策となります。しかし、単に拒否するだけでは満足出来ないので、次のような仕掛けを .htaccess へ記載しました。

RewriteEngine On
RewriteCond %{REMOTE_ADDR} ^192\.168\.11\.156$
RewriteRule ^feed(.*)$ http://nj-clucker.com/xxxxx.xml [R=302,L]

該当の IP アドレスからフィード情報を参照したら、偽物の RSS ファイルへリダイレクトするようにしたのです。 (IP アドレスと、偽物の RSS ファイルのアドレスはダミーです。)

記載した処理が本当に正しく動いているのか確認したかったので、このような対応を入れました。ついでに、偽物のフィード情報は、誰にも見せられない酷い内容を載せたのでここでは紹介できませんが、結果的に偽物フィード情報を読み込んで、とんでもない内容の記事が転載されたので、作戦は大成功と言えます。

最終的には、リダイレクトするフィードの URL をパクリサイトのフィード URL に変更しました。これで延々と自信のサイトの記事を転載し続けるループ状態に陥るはずです。

対策できても、これで安心ではありません

今回の対応は、IP アドレス指定によるによるフィード情報の差し替えを行いましたが、別の IP アドレスからアクセスされた場合は全く意味を成しません。根本的な対応かと言うと、答えはノーです。単に、対象のサイトからパクられ続けるのを停止させる措置でしかありません。

別のサイトで同じような手法を取られたら、その都度対応が必要になってしまいます。もう少し根底から対応できる方法は引き続き検討をしていこうと思います。

このパクリサイトでは、スマートフォン閲覧時に大量の広告が表示されるようになっていたので、パクリ記事で広告収入を得ようとしていたのが目的なのでしょう。他人の記事をパクって利益を得ようなんて、絶対に許されてはならない行為です。

自分が書いた記事と同じ内容の本文とタイトルが検索結果に並ぶのは気分の悪いものです。Google への著作権侵害の申請もまだ一部しか完了していないので、こちらは地道に続けていこうと思います。

以上、ブログ記事を top-news.red にパクられて、仕返しをした上での最終対策を行った結果の報告でした。

【2015.9.14 追記:FeedWordPress 対策の記事を書きました】

FeedWordPress からのアクセスを拒否する
ブログ丸パクリプラグイン FeedWordPress からのアクセスを拒否するために .htaccess を設定し、自分のサイトを守ろう
FeedWordPress は RSS や Atom のフィード情報から、自動的に WordPess のエントリーを生成するプラグインです。用途としてアンテナサイトを...

最新の更新情報は、Twitter、Facebook、Freedly にてお届け!

NJ-CLUCKER RSS