◆ ドメインブロックする Google の機能は終わってた
◆ 公式拡張機能は単純に表示されたものを消すだけ
◆ ページの結果が ばらばらになる
◆ 拡張機能増やしたくないからユーザスクリプト作った 

使えないサイトが上位にでてくる

たまに jQuery で作られたのをいじることがあって jQuery を使わないといけないハメになるのですけど あんまり興味ないので DOM と同じ名前でもないやつはほとんど使い方を覚えてません

毎回ググってます

jQuery をググってるとよく上位に出てくる暗くてうさぎみたいのがいるサイト ありますよね
最近 jQuery 配列からセレクタ使っていらないの除去するのって not だっけ? と思ってググってみると

googleblock-01


やっぱり今回も上位にいます
しかも 2 つも

このサイトは暗くて見づらい上に情報が更新されてない昔のサイトです
早くランク外に行って欲しいのですけど 未だに公式よりのリファレンスより上にいます

ドメイン確認せずに開いてしまうと  またここかぁ って思います
すぐに閉じて検索結果の下の方から公式リファレンスなど使えるところを探すのですが 連続でここに当たるとストレスもたまります

ブロックしたい

最初から検索候補になければいいのでブロックできないかなと調べてみると Google にログインしてればデキるという情報を発見

やっぱログインしてないとだめだよねーと思いつつも開いてみると
https://www.google.com/reviews/t
ブロックしたサイトの管理(停止しました)
いつも Google をご利用いただきありがとうございます。

このたび、サイト ブロック機能をひとまず停止させていただくこととなりました。サイト ブロック用の Chrome 拡張機能は引き続きご利用いただけます。また、Google では今後、不要な検索結果のブロック機能を再度検討していく予定です。


終わってた!


拡張機能を使ってということみたいです
https://chrome.google.com/webstore/detail/personal-blocklist-by-goo/nolijncfnkgaikbjbdaogikpmpbdcdef

公式の拡張機能

拡張機能入れると重くなるしあんまり入れたくないですが Google 公式拡張機能らしいのできっと高機能なんだよね と試しに入れてみました

使ってみると

なんか普通

Google 公式なんだから 返ってくる結果がフィルタ済みになってるのかと思ったら そんなことはなくて 表示されたあとにいらないのを消してるだけでした

最初に一瞬表示されてから消えます

もちろん 1 ページの結果数がバラバラになります
運が悪いとページが空になることだってあります

site: 制限して検索すると

googleblock-02

ページが空です
でも 628 件と結果があって ページャも使えます
site: 指定してるので全部が空ですけどね


そんなわけですごく期待はずれでした

単に DOM を見て マッチするドメインなら非表示にするだけ
これくらいだと数分でサッと作れるものです

アイコンが Google らしくない手抜き感なのもなんとなく納得です

自作する

拡張機能が多いとすごく Chrome が重いです
動作が遅いというより パソコン全体で使用メモリが多すぎて困ります

公式拡張機能でやってることが単純な非表示だったので同じようなものをユーザスクリプトにしてしまって 拡張機能を追加で入れなくて良いようにします
if(!window.google_block){
const block_hosts = ["semooh.jp"]

const update = _ => [...document.querySelectorAll(".srg>.g")].forEach(e => {
const a = e.querySelector(".r a")
const hostname = new URL(a.dataset.href || a.href).hostname
e.hidden = block_hosts.includes(hostname)
})
const mo = new MutationObserver(update)
mo.observe(document.body, {childList: true, subtree: true})
window.google_block = true
}

コードはこれだけです

Google の検索は Enter で確定すると ページ遷移なしで URL が書き換えられます
このときに 拡張機能の Tabs 機能では タブが更新されたと扱われます
history API によるものかページ遷移を見分ける方法はなさそうなので 2 度目は実行しないように if 文で囲んでます

Google なので .srg や .g といったクラスは定期的に変わりそうです
動かなくなったら たぶんここを修正すればだいじょうぶ
こういうところに手間書けなくて良いのは 公式拡張機能のほうがいいところです

if 文の最初の block_hosts にブロックしたいホスト名を配列で書きます

ユーザスクリプトにしてるので お手軽にブロック管理できないのはユーザスクリプトのちょっと不便なところ

逆にいいところは MutationObserver で監視してるので 最初にちょっと見えて消えるということがなくて最初から全く見えません


最初と同じ jQuery not での結果は
googleblock-03

要らないのが消えると公式リファレンスがスクロールしなくても見えるようになりました

公式なら一番に来てもらいたいですけどね
ユーザがドメインごとに + とか - の評価して順位に反映できるようになればいいのになー

ユーザスクリプト実行環境

コードだけあっても困るかもしれないので簡単に説明

ユーザスクリプトを実行するために拡張機能が必要です
たいていのものは 実行するコードと どの URL で実行するか あと実行タイミングが選べると思います

コードは ↑ にあるものを設定してください

実行するドメインは
https://www.google.co.jp
にします
海外版なら最後を co.jp のかわりに com とか co.uk とか適当に変えます

実行タイミングは DOM 構築前で大丈夫です


これがよくわからないなら 素直に Google 公式を入れたほうがいいと思います

一応私が作ったユーザスクリプト実行用拡張機能はこちら
ページに CSS や JavaScript を埋め込む拡張機能