ぼくたちとブリトニーの70日戦争

今日もTwitterで元気よくさえずっているたっくんですこんにちは.

元気は元気なんですが, 最近何か物足りないんですよ. ……そう, ブリトニーが来ない. あんなに疎んでいたのにいざ来ないとなるとこんなに寂しいなんて…… なにこれ恋?

そんなワケはないんですが, ホント音沙汰が無いです. 諦めたのか知りませんが, ひとつの節目として彼女らがどう進化してきたかをまとめてみます. ついでにふぇらほいもその進化に対してどう対処してきたかを併せて書いてみます. ちなみに日付は大体の目安です.

ふぇらほい誕生以前: 〜 9/26

いつから流行りだしたかはよく知りませんが, ブリトニーの熱烈フォローに困っている人がボクのTLだけでもかなりの人数居たと思います. ボク自身あまり気にしない人なので, ブロックもせずひたすら放置プレイ*1をキメていましたが, たしかに量はすごい, と思っていました.

このとき頭の中では「彼女らのアイコン一緒なんだから, 自動でブロックできそうだよね」と言う考えがありました. ただデフォルトアイコンのブリトニーがまれにいたので, 結局ふぇらほい自体はアイコンで判断していません. Britney Fuckedという名前が共通だったので, 名前だけで判断するようにしました.

ちなみに進化と称していますが, 実際は段階を経て, ふぇらほいなどのプログラムに補足されにくくするよう, 名前やアイコンに小細工を施していたようです. この段階でブリトニーは名前に半角ドット(.)を適当な位置に混ぜ込んでいました.

ふぇらほい誕生: 9/27 〜 10/10

とりあえず名前に含まれている半角ドットを除去した上でBritney Fuckedとなるアカウントをブリトニーとみなし, 自動でブロックを行うふぇらふぇらほいほいを公開しました. TwitterでURLを発言したらいろいろ広まったのか, 予想以上の登録者数の伸びにあたふたしたり*2. いまさらながらありがとうございます!

自動ブロックプログラムを更新しつつ, Web側のデザインもちくちく変えていました. 基本安定していたかなぁ, と思います.

ファミリー化と文字の置き換え: 10/11 〜 10/24

しかしココにきてブリトニーがBritney Fucked以外に, Britney Suck Cock, Britney Fuck, Britney XXXなどと様々な名前で攻めてくるようになりました. ボクはこのまとまりをブリトニーファミリーと呼んでいます. ちなみに他にはHorny Blackなどもいましたが, 彼女らもホーニィファミリーと呼んでいました*3.

さらには名前に含まれるiを1に, oを0に, という感じに似ている数字に置き換えてくるようにもなりました.

当然対処するために, スパムアカウントとみなす名前を列挙したブラックリストを更新していたのですが, ファミリー化と文字の置き換えによって, 名前のパターンが多種多様になり, 更新が間に合いません. そこで任意の文字列同士の相違度を表すレーベンシュタイン距離というのを使いました. 具体的にはブラックリストに含まれる名前と取得したアカウントの名前のレーベンシュタイン距離を求めて, それがしきい値以下であるならばスパムアカウントとみなす, という風にしていました. コレならBr1tney Suck C0ckが来ても, Britney Suck Cockとのレーベンシュタイン距離は2となり, 当時のしきい値である3以下のため, ブロックされていました.

全角文字による回避: 10/25 〜 11/13

レーベンシュタイン距離を実装してしばらくすると, 今度はBritney Fuckedという名前で攻めてきました. わかりにくいかもしれませんが, 3文字目のiが全角になっています. 実はこの時点では何も対処しなくとも, 現状の状態で対処できておりました*4.

しかし全角文字 + 文字の置き換え, のように複合的な手法を取られると, スパムアカウントとして検出されなくなりました. そこでしきい値を大幅に8にあげたところ, 今度はスパムでない人をスパムとしてブロックするという誤爆が発生したので, あえなく断念. その節は申し訳ございませんでした……

結局半角で表せる文字が全角であった場合(すなわちiなどのアルファベット), 半角に直してからブラックリストに含まれるか検査する, という方式にしました. ついでに大文字は小文字にしていました. またbritneyに着目して, britney(またはbritny, briteny*5 )が含まれている, かつbritneyを除外した残りの単語がfucked, suckcock, fuck, xxxなどの単語で構成されていたらアウト, という風にしました. ファミリー指向の検出に切り替えたワケです. なのでレーベンシュタイン距離はこのあたりで外しました. 実は処理が遅く, ファンが唸りっぱなしだったので.

ちなみにこのあたりで1日あたりのブロック回数が7,000 〜 10,000という値を連日記録しました. おそろしいですね!

またTwitterが実装したスパム報告もこの時点で行うようにしています.

リプライによる積極的攻撃: 11/14 〜 11/20

しばらくするとTLで「ブリトニーから@飛んできた!」と発言されてるのを見かけました. なにそれこわいと思ったら, 自分のところにも飛んできました. ただフォローしてきた時に比べて, 数はあまり多くなかったように思います*6.

ふぇらほいもそれに対応させようとしていたのですが, いかんせんフォロワーではなくMentionsを見なければいけないので, API実行回数の都合上あまり短い間隔で見れず, 漏れが発生するかも…… とか懸念していました. 実際はAPI実行回数がまったく増えるコトなくできたので杞憂に終わり, 無事に対処できました*7.

どのようにしてブリトニーかどうかを判断しているかですが, それはふぇらほいの方に書いてあります. なぜ名前で判断していないかというと, 名前が"誰かのTwitter ID + 適当な桁数の数字"(後に"適当な英単語 + 適当な桁数の数字"に変化)という一見するとブリトニーと思えないものだったからです. どうしちゃったんだよブリトニー……!

ちなみにこのころが一番激しかったと思います. 数的に言えばそれほどでもないのですが, リプライ飛ばしてくるわ, フォローしてくるわの波状攻撃にふぇらほい稼働させっぱなしでした.

過剰な没個性: 11/21 〜 12/4

さきほども名前がブリトニーっぽくないと書きましたが, このあたりからアイコンが例のフェ○アイコンではなく, デフォルトアイコンになったりと, 捨て身の攻撃を仕掛けてきました. ただ哀しいかな, 全部見当違いの方向だったり. あと発言にも全角などが混じっていたようですが, 前例があったのでどうせ仕掛けてくるだろうと, こちらもあらかじめ対処しておりました. 言うなれば落とし穴に全力で突っ込んできてくれた感じです.

後は卑猥なページへのURLを発言に含めず, プロフィールのWebに書いておくだけにしたり, URLではなくホスト名だけにしたりと, いろいろしていましたがいかんせん空振り感が強くて覚えていないです. ごめんよブリトニー. 気分的には恋人の些細な変化を見落としていて, 後から言及され, 凹む感じです. 凹んでませんけど.

Twitterの本気: 12/5 〜

そしてついにTwitterが本気を出しました. Twitter側によってブリトニーが粛清され始めたようです. 具体的に言うと10分ぐらいでブリトニーのアカウントが凍結されていました. なのでこのあたりからブリトニー含めスパムアカウントを見る数が激減しました(ボクだけかもしれませんが).

そして今に至る, という感じです. 正直どうしてそこで諦めるんだそこで! 昔のお前思い出してみろ! せっかくアイコンベースの検出作ってくれている最中だっt, あ, いや, コレでよかったなぁと思います.

ただこの静寂は一時のコトかもしれないので, それはあしからず……

ちなみに過去のTwitterでの発言を元にこの文章を書いたため, ヌケがあるかもしれません. なにか気づきましたら適当にご連絡いただけると嬉しいです.

*1:ある程度の時間が経過するとTwitter側でスパムアカウントを凍結してくれていたようです

*2:予想外すぎて自動ブロックプログラムが対処しきれなくなりました. その時の内容はこんな感じ Twitterのしつこいフェ○アイコンを自動でブロックするサービスを作ったよ

*3:ちなみにブリトニーは本家という位置づけで, ブリトニーと同じような動作をするスパムアカウントを亜種という位置づけにしていました. まぁスパムには違いないのですが

*4:詳しく言うと, UTF-8における全角のiは3バイトで, 半角のiとのレーベンシュタイン距離は3となります. しきい値である3にギリギリ収まるので, スパムアカウントとみなされます

*5:britenyは誤字だと思いますがw 現れたコトあるので一応

*6:リプライしてきたブリトニーを見ると発言数が130前後で止まっていました. おそらく一定時間内に発言しすぎて, 制限にひっかかっていたから, 数が少なかったのかと

*7:正確には当然増えましたが, 影響しないようになりました(というよりもともと影響していない). Streaming APIとか試みるよりもさっさとMentions見ればよかったなぁ, と思います