fediversesearchのクローラーは、「DNSでIPアドレスが設定されていない場合はDBにフラグを立てる」「初回のクロール時にタイトルなどの情報が取れなければDBに書き込まない」という感じの仕様になっています。
この仕様と検索用APIの「DBでそのURLのDNSステータスフラグがエラーの場合は検索結果から外す」「タイトルが無いURLは検索結果から外す」が組み合わされて「到達できないURLは検索結果に出ない」ことになっています。
ただし、クローラーの作成当初から「一度クロールに成功して、DNSがIPアドレスなどを返す場合は生きていると判断している。もしそのURLがクロール時のドメイン所有者から別の所有者に渡り、SNSではない内容に置き換わっても現在の実装ではチェックできていない」という問題は認識していました。
つい先日、以下のようなtootが流れてきました。
mstdn.beer
恐れていた事態が確認できてしまいました。fediversesearchでそのURLを検索したらヒットします。これは大問題です。
というわけで、ソースコードに修正を入れました。
github.com
一番手軽で効果が期待できるところのみを修正してみました。
どうなったか確認してみました。まずは自鯖を現時点でのDBで検索してみます。
もちろん結果に表示されます。次に自鯖のみをコードを修正したクローラーでクロールしてみてから検索してみます。
変わらずです。
次に、問題となっているURLを現時点のDBで検索します。
ヒットしますね。もちろん、生きていた時のデータが表示されています。では、このURLをコードを修正したクローラーでクロールします。結果はこうです。
ヒットしなくなりました。
これで修正は問題なさそうなので、DBに登録されている全URLについて再度クロールをやり直しました。再クロール終了後、有効なインデックス数は8000ぐらいから6000ぐらいになりました。
mastodonとかのSNSで使用していたドメインなんて誰が買うんだろうとは思いましたが、googleでヒットする限り狙う人はいるんでしょうね。
まだクローラーで対応すべき個所はありますので、徐々に見直していきたいと思います。