§0数字を信頼できるということ
「止める場所を、手前へ」で入口を固め、「UA の外側で、見分ける」でページの段階の判定を整えました。その結果、ページの段階で「人」と判定した閲覧と、合図(ビーコン)で人と確かめられた閲覧が、8割以上で重なるようになりました。
これは、数字との付き合い方を変えました。以前は、人気ページの順位を見ても「これは本当に人なのか」を先に疑っていました。今は、「この数字は何を語っているか」から考えられます。
最終回は、1件ずつの判定のあとに全体を見直して気づく仕組みと、信頼できる数字から見えてきた、人の動きを書きます。
これまでと同じく、見直しのルールの中身や、点数のつけ方の数字は書きません。人の動きの例は、個人が特定されないようにぼかしています。
§11件では分からない形
ページを開いたその場の判定は、速くなければいけません。読み手を待たせるわけにいかないからです。そこで、記録するときは手早く判定し、あとからまとめて見直す仕組みを、別に動かしています。
- cron で10分ごとに動かす。
- 直前の数分は対象にしない。合図が届くのを待つため。
- 見直すのは、bot を見逃した記録と、人を bot にしてしまった記録の両方向。
1件ずつでは普通に見えても、並べると見える形があります。種類としては、次のようなものです。
| 並べると見える形 | 1件だけ見ると |
|---|---|
| 同じ秒に、同じページへ、いくつもの IP が来る | それぞれ普通の閲覧 |
| 1つの IP が、短い間に UA を何度も取り替える | それぞれ別の人 |
| 同じ UA が、たくさんの IP から来て、どれも合図がない | すぐ閉じた人が多いだけ |
| ある UA の記録の、ほとんどが bot と判定されている | 残りのわずかは人に見える |
逆の方向では、いったん bot と判定した記録に、あとから人の証拠(合図など)が揃ったら、人に戻します(救済)。救済のほうは、条件を絞って慎重に足しています。戻しすぎると、②で整えた判定が無駄になるからです。
§2クローラの本物確認
検索エンジンのクローラは、止めてはいけない相手です。ところが、その名前を名乗るだけの偽物がいます。「bot は、3種類いる」で書いた逆引きの確認を、その後もう少し厳しくしました。
- IP から逆引きで名前を引く。
- その名前を正引きして、元の IP に戻るかを確かめる。逆引きの名前は相手が自由に書けますが、正引きのゾーンは書けません。
- 名乗った会社と、逆引きで分かった会社が一致するかを見る。
3つ目を足したのは、ある失敗からです。大手のクラウドを借りた誰かの IP は、逆引きすると、その大手のドメインで終わる名前になります。名前の末尾だけを見ていたので、クラウドを借りたスキャナが、その会社のクローラとして「本物」と判定されていました。誰でも借りられるクラウドの名前は、その会社そのものではありません。
逆引きで確かめられない相手もいます。公表されている IP の範囲がある会社は、その範囲で確かめます。範囲もない相手は、無理に決めません。
①で書いた、LINE のプレビューを止めてしまった失敗への、仕組みの側からの答えがこの3つ目の欄です。「確かめられない」を独立した答えとして持つようにしました。
§3止める候補を、点数で並べる
ダッシュボードには、ipset に入れる候補を、点数の高い順に並べています。点数を上げるのは、次のようなものです。
- PHP まで届いた攻撃(入口をすり抜けた分)
- ②で書いた、細部の食い違いのうち、強いもの
- ホスティングの IP であること
- クローラを名乗りながら、確かめた結果が食い違うこと
候補を見直す中で、2つの失敗が見つかりました。
例外が、攻撃をかくまっていた
「人の閲覧も多い IP は、候補から外す」という例外を入れていました。会社や学校の共有の出口を止めないためです。ところが、その例外のせいで、攻撃を繰り返している IP まで候補から消えていました。人の閲覧が多いように見えたのは、bot の判定をすり抜けた分だったのです。いまは、攻撃が届いている IP や、合図のない強い bot には、この例外を使いません。
先頭だけ読んで、漏れていた
§2 の確認の結果は、IP ごとに記録しておいて、候補の画面で読み出します。その読み出しで、記録の全体から先頭の決まった件数だけを読んでいました。記録が増えると、確認済みの IP が読み込みの範囲から外れ、「未確認」として表示されていました。候補の IP を名指しで読むように直しました。
どちらも、判定の条件は正しかったのに、画面に出るまでの途中で消えていました。判定を作ることと、それが実際に画面に出ることは、別の問題です。
§4見張る形
ルールにするにはまだ早いけれど、気になる集団があります。ある回線から、ある言語で、ある形の UA で来る、といった集まりです。分析の画面に、こうした「見張る形」をいくつか登録して、日ごとの件数と、多い IP・UA を並べています。
- ルールにする前の観察:数日見て、人が混ざらないと分かってから、判定にする。
- ルールにしたあとの確認:止めたあと、相手が形を変えて戻ってこないか。
- 役目を終えたら外す:ある古い形の UA を見張っていたものは、入口で止めたあとに外し、別の形に入れ替えた。
見張る形は、設定ファイルの配列で足し引きできるようにしてあります。画面を作り直さずに、見たいものを入れ替えられることが大事でした。
§5人の動きが見えた
ここからが、この連載でいちばん書きたかったところです。数字を信頼できるようになって、人がページをどう使っているかが見えてきました。
ナビと計算ページを、行き来する人
iseeit.jp には、6つの係数の計算ページと、やりたいことから係数を選ぶ「逆引きナビ」があります。ある平日の昼、1人の読み手が、20分ほどのあいだにナビを12回開き、計算ページとのあいだを行き来していました。
見ていたのは、年金現価と資本回収、年金終価と減債基金という、逆数の関係にある組でした。どちらを使えばよいかを、ナビに戻りながら確かめていたように見えます。どこで迷うかが、ここまで細かく見えたのは初めてでした。ページ同士を直接つなぐ「対になる係数」のリンクを考えるきっかけになっています(§7 で、この20分を再生します)。
ChatGPT から来る人
流入の上位に、utm_source=openai の付いた URL が並ぶようになりました。ChatGPT の回答の中のリンクから来た人です。金融と ICT の解説の記事に、続けて来ています。検索エンジンとは別の入口が、静かに育っています。
先読みで分かること
②で書いた先読みは、毎日いくつか記録されています。検索からの先読みは、そのページが検索結果の上位に出ているしるしです。先読みのあとに合図が来たかどうかで、上位に出たときに選ばれたかも分かります。アドレスバーからの先読みは、一度来た人が戻ってきたしるしです。
古いリンクから、今も来る人
②で書いた、アプリの中の一瞬の表示は、昔の http:// のリンクから来ていました。何年も前に保存されたリンクが、今も使われているということです。計算ページを、道具として手元に置いている人がいます。
PV に比べて、セッションが少ないページ
あるページは、22 PV に対してセッションが3つでした。調べると、1台のスマホが、ある夜に27分で15回、翌日の夜にも6回、同じページを読み込んでいました。ニュースアプリの中のブラウザは、アプリに戻るたびにページを読み込み直すことがあります。じっくり読む人ほど、PV が膨らみます。
どの例も、bot が混ざった数字の中では埋もれていました。1人の20分、1台のスマホの2晩は、bot が数千件いる中では、ただのノイズにしか見えないからです。
§6運用のリズム
仕組みを作ったら終わり、ではありませんでした。今は、次のリズムで回しています。
| いつ | やること |
|---|---|
| 毎日 | ログ一覧を眺める。迷った記録は、Apache のログと並べて見分ける。 |
| 毎朝(自動) | ipset の期限の延長を判断する。保留になったものだけ、人が見る。 |
| 10分ごと(自動) | §1 の見直し。 |
| 毎週 | 決まったクエリで振り返る。新しい判定の効き方、理由が1つだけの記録、見張る形の推移。 |
| 都度 | 判定を足したり見送ったりしたら、台帳に1行。 |
相手は形を変えてきます。けれども、毎日眺めて、毎週数えていれば、変わり始めた時点で気づけます。この連載のタイトルの「気づく」は、その意味です。
§7デモ:ある20分を再生する
§5 の、ナビと計算ページの行き来を再生します。時刻は始まりからの経過時間に置き換えています。横の帯が、そのページにいた時間です。色は、逆数の組ごとに揃えています。
§8まとめ:bot を除くのは、下ごしらえだった
| 回 | やったこと | 考え方 |
|---|---|---|
| ① 止める | ipset、.htaccess、410 | 止めるのは手前で。止めすぎないために、先に人を数える。 |
| ② 見分ける | 細部の整合、ビーコン | bot らしさと人らしさの証拠を、両方から見る。決めないものを持つ。 |
| ③ 気づく | 見直し、確かめ、見張り | 1件では分からない形を、あとから拾う。数字の先にいる人を読む。 |
始めたときは、bot を除くこと自体が目的だと思っていました。けれども、除き終わって見えたのは、ナビと計算ページのあいだで迷う人や、何年も前のリンクから来る人でした。bot を除くのは、人の動きを読むための下ごしらえだったのです。
下ごしらえは、これからも続きます。相手は変わり続けるからです。ただ、もう数字を疑うところから始めなくてよくなりました。
- 止める場所を、手前へ
ipset・.htaccess・410 - UA の外側で、見分ける
細部の整合・ビーコン・どちらでもないもの - 数字を信頼できて、見えたもの(この記事)
見直し・確かめ・見張りと、人の動き