ファンブログからWordPressにデータを完全移行するスクリプト

ファンブログからWordPressにデータを完全移行するスクリプトを書きました。自動で以下の事をやってくれます。ダウンロード中に接続が切られると、自動で再接続して再開します。ファンブログのサーバーから「下書き」を含む、すべての記事のダウンロード。投稿されたすべての「コメント」データのダウンロード。投稿されたすべての「トラックバック」データのダウンロード。ファンブログのサーバーから記事で使っていないものを含む、すべての画像ファイルのダウンロード。記事で使っているすべての画像ファイルのURLをWordPressにアップした新しい画像URLに書き変え。記事で使っているすべての内部リンクのURLをWordPressにアップした新しいURLに書き変え。

2014年1月22日にA8.netのファンブログはSeesaa Blogのシステムをベースにして生まれ変わりました。現在ではこの方法は不要でファンブログに基本装備されたエクスポートが使えます。その、新しい方法についての詳細は「無料ブログからWordPressへデータを移動する手順」に書いていますので、そちらをご覧ください。

ファンブログからWordPressにデータを完全移行するスクリプトを書きました。

サンプルとして、WordPress側のテンプレートは完全デフォルトのまま、移行したこのブログの記事を次のサイトで公開しています。(入っているのはこの記事のひとつ前の記事までです。)

http://idobata.cocorodesign.net/escape/

適切な設定だけすれば、自動で以下の事をやってくれます。ダウンロード中に接続が切られると、自動で再接続して再開します。

  1. ファンブログのサーバーから「下書き」を含む、すべての記事のダウンロード
  2. 投稿されたすべての「コメント」データのダウンロード
  3. 投稿されたすべての「トラックバック」データのダウンロード
  4. ファンブログのサーバーから記事で使っていないものを含む、すべての画像ファイルのダウンロード

追記:現在はコメントとトラックバックの取得数はゼロになり、取得されません。それは、ファンブログのサーバーが公開していない結果なので、正常な動作です。

また、WordPress側の新しいブログにアップロードする際、次の事も自動で行います。

  • 記事で使っているすべての内部リンクのURLをWordPressにアップした新しいURLに書き変え
  • 記事で使っているすべての画像ファイルのURLをWordPressにアップした新しい画像URLに書き変え

ただし、内部リンクへ対応する代わりにWordPressのパーマリンク設定を「数字ベース」または「デフォルト」にする必要があります。

書き変えるのは内部リンクだけです。http://fanblogs.jp/自分のURL/を含むリンクは、すべて自動で書き変えますが、下のように本文中に書いてあるURLは書き変えません。

こういう風に、リンクでないURLは書き変えません。
このブログの、旧URLは、http://fanblogs.jp/ayzfqir5/です。

ファンブログの独自タグには対応していません。ご了承ください。(追記:対応しました
ファンブログのエディタの注意点

ファンブログのサーバーから「下書き」を含む、すべての記事のダウンロードで取得するのは次の項目です。

  • ページ番号(http://fanblogs.jp/hoge/archive/xxx/0 の xxx の数字)
  • タイトル
  • カテゴリー名
  • 投稿年月日時間
  • 記事本文
  • 記事追記部分
  • 記事の概要
  • 公開/下書きの区分

投稿されたすべての「コメント」データのダウンロードで取得するのは次の項目です。

  • コメントが投稿された記事のページ番号
  • 投稿年月日時間
  • 投稿者名
  • 投稿者のURL
  • 投稿者のメールアドレス
  • コメントの発信元IPアドレス
  • コメント本文

投稿されたすべての「トラックバック」データのダウンロードで取得するのは次の項目です。

  • トラックバックが投稿された記事のページ番号
  • 投稿年月日時間
  • トラックバックされた、相手の記事のタイトル
  • 投稿されたトラックバックのURL
  • 投稿されたトラックバックのブログ名
  • 投稿されたトラックバックの発信元IPアドレス
  • トラックバック本文

詳細は「ファンブログからWordPressへすべてのデータを移動する手順」をご覧ください。

姐さんのスクリプト活用リポート「WordPress完全移行スクリプトキタ-!」も参考にしてください。
残念ながらこの方法を実行するには、それなりのスキルが必要です。簡単にバックアップを取りたければ、次の方法を試してください。Windowsでファンブログの全記事バックアップスクリプト

その他の移行方法

このスクリプトはWordPressに移行するためのものですが、他の方法がこちらで公開されています。
ドメイン以下のURLを完全に保持しながら無料ブログから移転する方法・予告

どちらの方法も一長一短ありますが、比較をするとこうなります。

このページのスクリプト

  • スクリプトを動かす環境構築が難しい
  • その代わり、スクリプトが動きさえすれば、割とスムーズに移行できる。
  • リンクの張替え全自動
  • WordPressに変換後、MT形式に再変換すれば
    FC2やlivedoorブログなど、大部分のブログに移行可能
    (独自ドメインがいらない)
    MT形式がターゲットなら、下の追記の方法の方が手間は少ないです

ドメイン以下のURLを完全に保持しながら無料ブログから移転する方法

  • 導入が比較的簡単
  • リンクの張替えは、別作業で必要
  • 同じルックスが維持できる(ヘッダ画像などの著作権には注意すること)
  • 独自ドメインが必要

導入が比較的簡単と書きましたが、このページのスクリプトに比べてです。どちらを使うにしても、「とても簡単」というわけにはいきませんので、ご了承ください。

追記:MT(MovableType)形式への移行方法

という方法もあるようです。タイトルでは、さくらのブログ・Seesaaブログとだけ書いてありますが、どちらの記事もMT形式すべてに対応できそうです。

古いスパムの速攻削除方法 – 昔の記事にスパムを発見!削除をしたい!そんな時[ファンブログ]

2014年1月22日にA8.netのファンブログはSeesaa Blogのシステムをベースにして生まれ変わりました。よってファンブログ関連の記事は今では当てはまらない可能性があります。新しいファンブログのカスタマイズは別ブログ「ファンブログ テック」で詳しく書いていますので、そちらをご覧ください。

この方法はファンブログ専用です。

これは、うちに来たスパムではないのですが、よく見ると日付の間隔が離れています。一つは昨夜の23時12分。残りは昨年の3月と12月のものです。昨夜書き込まれた分はすぐに消せます。しかし、昨年のスパムを削除するのは結構大変な作業です。そこで、そのスパムを極力簡単に削除する方法を説明します。

ブログに表示されているスパムコメント

スパムを削除する前に

スパムを削除する前に、そのスパムのリンク先URLと、本文中のキーワードをスパムフィルターに登録しておきましょう。

リンク先URLは、投稿者名など、リンクしている文字の上にマウスを合わせて右クリックすると「リンクアドレスをコピー」などと書かれていますから、それをクリックすればメモリーに保存(コピー)されます。

右クリックでポップアップ目にゅヶ表示される

その状態でスパムフィルターの登録フォームに貼り付け(ペースト)すれば、登録できます。

「リンクアドレスをコピー」という文章は、ブラウザによって違います。意味で判断してください。

スパムフィルターにはキーワードだけでなく、リンク先のURLも登録できます。キーワードがない場合は、文章を登録する事も可能です。

スパムフィルター

削除方法

3つのスパムは、同じ記事に書き込まれています。記事そのものも昨年のものですが、これの編集画面は簡単に表示できます。以前の記事古い記事の編集画面を一発で出す方法[ファンブログ]を参照しながら、そのページを出してください。

編集画面の下には、次のように、その記事に寄せられたコメントリストが表示されています。

管理画面のコメント一覧

その中の該当コメントの本文をクリックすると、次のようなポップアップ画面が出ます。対象コメントの下の「削除」ボタンを押せば、削除できます。

管理画面のコメントポップアップ表示

ただし、記事編集画面に表示されるコメントは5個までです。5個のどれかのコメントをクリックしても、ポップアップにそれより古いコメントは表示されません。

古いコメントをコメント一覧で探す方法

コメントが多い記事にスパムがあった場合、その記事の5個目より古いコメントなら、コメント一覧で探すしかありません。

まず、管理画面の「記事の管理」一覧に「コメント一覧」とありますので、そこをクリックします。

管理画面のサイドバー

コメント一覧のページが開いたら、記事の表示件数を100件にします。

表示件数を100に

そして「次へ」をクリックして、2ページ目に移動します。

次へ

ブラウザのアドレスバーに表示されているURLをチェックします。ご覧いただいている、このブログの場合、URLは次のようになっています。

URLをチェックする

https://fanblogs.jp/sec/AllCommentList.blog?blog=ayzfqir5&page_size=100&current_page=1#body

青い文字の「ayzfqir5」は、このブログのURLにあるユーザー固有の名前です。緑の「100」は、先程変更した表示件数、最後の赤字がページ番号です。今は「1」となっています。ちなみに1ページ目はゼロ、2ページ目が1です。数字はゼロから始まります。

この赤字の部分を開きたいページ番号に変更します。100ページ目(正確には101番目)を開くには、次のように書きます。ちなみに、最後の#bodyは、あっても構いませんが不要です。

https://fanblogs.jp/sec/AllCommentList.blog?blog=ayzfqir5&page_size=100&current_page=100

これをブラウザのアドレスバーに入れて、Enterを押せば、100ページ目(正確には101番目)が開かれます。1ページ目から順番に「次へ」をクリックしていくよりもずっと早く移動できますので、適当に数字を飛ばしながら、コメントのありかを探るのがいいと思います。

コメントは最初の部分しか表示されていませんが、マウスを乗せると全文が表示されます。該当するコメントが見つかったら、クリックすれば削除用のポップアップが出ますので、削除ボタンを押して削除します。

マウスを合わせるとコメント全文が表示されるマウスを合わせるとコメント全文が表示される

ファンブログからの撤退準備

2014年1月22日にA8.netのファンブログはSeesaa Blogのシステムをベースにして生まれ変わりました。よってファンブログ関連の記事は今では当てはまらない可能性があります。新しいファンブログのカスタマイズは別ブログ「ファンブログ テック」で詳しく書いていますので、そちらをご覧ください。

ページを開けません

きのうも知らない人から、なぜか読めない(T_T)とツイートされたんだけど、知らない人に説明できないから、ファンブログからは近々、撤退します。

問題は、ページを開けない、ログインできないで、今まで書いたものを吸い出せないことだな。古い記事は置きっぱなしでもいいかというと、ファンブログではそうもいかない。なぜなら置いておいても読めないから。

ということで、対策を講じたら古い記事は、よそへ持っていきます。

ちなみに、下の図がこのブログのアクセス元データなんだけど、いちばんアクセスを集めている元はGoogleの36.53パーセント。2位がYahoo!で29.04パーセント。3位がブックマークなどでリンク元がないもの。4位のt.coはTwitterからのリンクです。

その後のa8.netというのがファンブログなのかと思うんだけど、まあ、この程度ならファンブログからのアクセスは切り捨てていいレベル。

10位までには入っていないけど、はてなブックマーク(はてブ)と、NAVERまとめからのアクセスもいくらかあって、これは人の作ったものなので、自分ではリンクの張替えが出来ない。知らない人の他のブログから張られているリンクもあるので、ここにはここで、同じ記事を残しておいた方がいいのかも。

Twitterからのアクセスは、ほとんどが新しい記事に来るものなので、移転してもあまり問題はないのじゃないかと思っています。facebookとmixiからのアクセスについても、そうじゃないかと思います。ただ、この2つはリンク元のページを確認できていないので推測です。

問題は検索からのアクセスと、ブックマークからのアクセス。これにどう対処するべきかは要検討です。

アクセス元データ

今日はファンブログが壊れています

2014年1月22日にA8.netのファンブログはSeesaa Blogのシステムをベースにして生まれ変わりました。よってファンブログ関連の記事は今では当てはまらない可能性があります。新しいファンブログのカスタマイズは別ブログ「ファンブログ テック」で詳しく書いていますので、そちらをご覧ください。
注記:
この不具合はスパム攻撃の可能性もあります。
詳しくは「スパムが多いとアクセス障害が発生する」をご覧ください。

なんかログイン出来ねー。

ファンブログのトップページに飛ばされたんで見てみたら、「最新記事一覧」に20分以上も前の記事があるし。いくら人の少ないファンブログでも20分も前の記事はねーだろ。俺だけじゃなくて、みんなログインできてないんじゃないの?

ログインはともかく、ちゃんとブログが開かないと、読者に失礼なんだよな。ということで、読者の皆さん、ごめんなさい。

って書いても、開けなきゃ読めないし。アクセスが落ちるのは仕方ないな、今日は。

信用落とすと、今日だけの問題じゃなくなるんだけど。

スパムからのアタックが多ければ、サーバーに負荷がかかって、アクセス出来なくなるよな。調子悪いのが、そのせいかどうかは知らないけど。

スパム撃退スクリプト – URL抽出阻止

2014年1月22日にA8.netのファンブログはSeesaa Blogのシステムをベースにして生まれ変わりました。よってファンブログ関連の記事は今では当てはまらない可能性があります。新しいファンブログのカスタマイズは別ブログ「ファンブログ テック」で詳しく書いていますので、そちらをご覧ください。

最近、スパムコメントやトラックバックが多くてウザいと言っている方がたくさんいます。

そこで、スパム対策スクリプトを書いてみました。このブログでは、意図どおりに動いています。

当ブログにスクリプトを設置したのは2013年6月15日午前0時ですが、今のところスパムはゼロです。ただ、このブログには元々スパムが少ないので、スクリプトの成果が出ているのかどうかは判断できません。

追記:

2013年6月18日04:09、2013年6月19日10:46、2013年6月20日15:04の3回、コメントスパムが一件ずつありました。ただし手入力の可能性があります。(*注1
(そのコメントのキャプチャを見るにはここをクリック)

スパムコメント

スパムコメント

手入力によるスパムの対策記事は「スパムを防ぐにはhref=の5文字と[/url]の6文字を禁止に!」です。

スパム送信側が、このページで公開したソースを読めばブロックは破られてしまいます。なので、ソースは非公開でこっそり使うのが正しいですが、あえて公開します。

詳しいことは後述しますが、本来、スパムの対策をJavaScriptで書くのは無意味です。ですが、あるスパムはHTMLを取得して解析し、コメントやトラックバックの送信先アドレスを抽出しているのが間違いありません。それで、この対策スクリプトが有効に作用するかどうかを探りたいと思います。

このスクリプトを使用中の、その他のブログ

イタリアンな日々
設置日:2013年06月15日
2013年6月17日トラックバックスパムあり(*注2
2013年6月17日以降のスパム:0
goods and life +
設置日:2013年06月18日
2013年6月18日以降のスパム:0
楽して稼ぎたい~お小遣い稼ぎ情報局~
設置日:2013年06月18日
2013年6月18日以降のスパム:0

*注2:2013年6月17日 「トラックバックでスパムフィルターが有効であることを知らせる」を無効にしないと、URLが読まれます。

このスクリプトはファンブログ専用です。ただ、ロジックを理解していただければ、ファンブログ以外でも改変して使えます。改変はご自由にどうぞ。

ちなみに、これを導入すると、JavaScriptが無効なブラウザからはコメントが送れなくなります。しかし、画像認証を使っていてもそれは同じです。

送信先URLを抽出できなくする

今回書いたスクリプトがやっているのは、URLの隠蔽です。URLを隠すことで抽出できなくします。

ファンブログのスキンに、次の2ヵ所があります。

{$BlogEntryTrackbackLink$}
{$BlogCommentPostUrl$}

{$BlogEntryTrackbackLink$}と書かれた場所には、トラックバックURLが書き込まれます。

同様に{$BlogCommentPostUrl$}には、コメント送信先URLが書き込まれます。

今回のスクリプトは、それを以下の手順で処理します。

  1. 2つのURLを該当個所に書き込まず、別の場所に書いておいて、そのHTMLをサーバーが送信する。
  2. HTMLをブラウザで読み込んだ後、別の場所に書かれているURLを正規の場所に書き直す。

スパム側はスパム側で、別のスクリプトを使ってURLを抽出しようとするでしょう。しかし、あるはずの場所にURLがなければ読み込めないと思います。

スクリプト導入の前処理

変更が必要なスキンは「1記事」だけです。「1記事」のスキンの2ヵ所を変更します。

まず{$BlogEntryTrackbackLink$}を削除します。結果は下の様になります。

変更前

<div id="trackbackText">
この記事へのトラックバックURL<br />
<SpamFilterTrackbackNotice><a>{$BlogEntryTrackbackLink$}</a>
</SpamFilterTrackbackNotice><br />
</div>
変更後

<div id="trackbackText">
この記事へのトラックバックURL<br />
<SpamFilterTrackbackNotice><a></a>
</SpamFilterTrackbackNotice><br />
</div>

次に{$BlogCommentPostUrl$}javascript:void(0);に変更します。

変更前

<div id="commentForm">
<BlogEntryIfAllowComments>
<BlogEntryIfAllowPostComments>
<h3 id="commentTitle">コメント</h3>
<div class="text">{$CommentErrMsg$} 
<form method="post" name="WriteCommentForm" action="{$BlogCommentPostUrl$}">
<table border="0" cellspacing="0" cellpadding="0">
(以下略)
変更後

<div id="commentForm">
<BlogEntryIfAllowComments>
<BlogEntryIfAllowPostComments>
<h3 id="commentTitle">コメント</h3>
<div class="text">{$CommentErrMsg$} 
<form method="post" name="WriteCommentForm" action="javascript:void(0);">
<table border="0" cellspacing="0" cellpadding="0">
(以下略)

これであるハズの場所に、URLはなくなりました。

スクリプトの導入

URLを本来の場所に書き戻すために、今回作ったスクリプトはこれです。スパム送信側は、これがわからないのでURLは見つからないはずです。

<!-- スパム撃退スクリプト ここから -->
<script type="text/javascript"><!--
(function(){
	var tb=document.querySelector('div#trackbackText a');
	var form=document.querySelector('div#commentForm form');

	if(tb){
		tb.innerHTML='{$BlogEntryTrackbackLink$}';
	}

	if(form){
		form.action='{$BlogCommentPostUrl$}';
	}
})();//-->
</script>
<!-- スパム撃退スクリプト ここまで -->

このスクリプトを、そのままコピーして「1記事」スキンの最後の方にある{$BlogAccessCounter$}の上に追加します。スクリプト1行目の<!– スパム撃退スクリプト ここから –>と、最後の<!– スパム撃退スクリプト ここまで –>は、なくてもいいのですが、後で削除や書きかえを行なう際に目印になるので、このまま書き込んでください。

<div id="footer">
</div><!-- /footer -->

</div><!-- /container -->
ここにスクリプトを追加
{$BlogAccessCounter$}
</body>
</html>

スクリプトの赤字部分trackbackTextcommentFormは、スキンのidと照合して、同じ名前かどうかを確かめてください。もし名前が違うなら、スキンのidと同じ名前に書きかえて使ってください。

“スパム撃退スクリプト – URL抽出阻止” の続きを読む