Greasemonkey Script でブラウザ拡張

前にも書いたけど中国にはインターネットの規制がある。

主たる目的はポルノサイトの締め出し。隠れた目的は、国益を守るためと情報操作、だと思う、と一応付け足しておこう。

Google も中国でサービスを展開するに当たり、中国政府に逆らうわけにはいかなかったようで、検閲に協力している。どういう形で協力しているかというと:

  • リンクをクリックすると、Google 経由でリンク先にたどり着く
  • もしリンク先が検閲対象だった場合は、しばらく Google が使えなくなる

という具合。

検閲対象のページが見れないのは仕方ないにしても、続けて別のキーワードで検索ができないのは痛い。

ということで、作ったのが以下の Greasemonkey Script。

// ==UserScript==
// @name           Detect The Great Firewall of China
// @namespace      http://d.hatena.ne.jp/satosystems/
// @include        http://www.google.co.jp/search?*
// @include        http://www.google.com/search?*
// ==/UserScript==

var list = [
	'.geocities.jp/',
	'.nifty.com/',
	'.youtube.com/',
	'.blogspot.com/'
];

var l = document.getElementsByClassName('l');
for (var i = 0; i < l.length; i++) {
	l[i].setAttribute('onmousedown', '');
	var href = l[i].getAttribute('href');
	for (var j = 0; j < list.length; j++) {
		if (href.indexOf(list[j]) >= 0) {
			l[i].innerHTML = '<s>' + l[i].innerHTML + '</s>';
			break;
		}
	}
}

このスクリプトを有効にしておくと、見れないページは以下のように表示される。

やっていることはとても簡単。

  • onmousedown で動作する Googleスクリプトを無効にする
  • もしリンク先が検閲対象なら取り消し線を入れる

悩ましいのは同じく Greasemonkey Script の AutoPagerize で読み込んだ場合に機能しないこと。AutoPagerize を変更しないで対応する方法はあるものなのか。