読者です 読者をやめる 読者になる 読者になる

読み書きプログラミング

日常のプログラミングで気づいたことを綴っています

Advent Calendar 9 - 番外編 Twitterの自動フォローバック〜私は見た!Twitterの闇の一端を〜

Meteor

Meteor固有の話ではありませんが、面白いことが起こったので、実装含めてご紹介。

Twitter APIとNPMのtwitterパッケージを使えば自動フォローバックが簡単に実装できます。

meteor add npm

packages.json

{
  "twitter": "0.2.4"
}

サーバー側

Twitter = Meteor.require 'twitter'

officialTwitterAccount = Meteor.users.findOne 'services.twitter.screenName': 'mimiaka1846' # ウェブアプリの公式Twitterアカウントで予めサインインしておく。

startAutoFollowBack = ->
    service = Accounts.loginServiceConfiguration.findOne service: 'twitter'
    if service? and officialTwitterAccount?
        twitter = new Twitter(
            consumer_key: service.consumerKey
            consumer_secret: service.secret
            access_token_key: officialTwitterAccount.services.twitter.accessToken
            access_token_secret: officialTwitterAccount.services.twitter.accessTokenSecret
        )
        twitter.stream 'user', (stream) ->
                stream.on 'data', (data) ->
                    if data.event? and data.event is 'follow' and data.source.statuses_count > 1 # 最後の条件はスパムアカウントはフォローしないという条件
                        twitter.createFriendship data.source.id,
                                follow: false
                            , (data) -> console.log data if data.errors?

Meteor.startup ->
    startAutoFollowBack()

TwitterのストリームAPIを使って、followイベントが来たらフォローバックします。
実装はこれだけです。

後はおもしろ話。
最初、フォローしてくれたアカウントはすべてフォローバックするように実装しました。すると、デプロイして4日目。突然、2分に1アカウントぐらいの速度でフォロワが増え始めました。70名ぐらいだったフォロワがその日の午前中には200名を越えて、「おお、私の作った囲碁サービス、誰か有名人に紹介でもしてもらってついにブレイクしたの?」と歓喜しました。

で、どんな人たちか見てみると、囲碁には全く興味なさそうな人たちばかり。しかも、プロフフィールを見ると、ほとんど全員がツイート1件だけ。可愛らしいアイコンとスクリーンネーム、プロフィールと1件のツイートでそれっぽく見えますが、フォロワ稼ぎのための虚構アカウントに違いありません。必ずフォローバックしてくれる私のアプリのアカウントを見つけて、大挙して押し寄せてきたようです。

で、フォローバックの条件にツイート2件以上つぶやいていることを入れて、それまでにフォローした虚構アカウントのアンフォローをしました。
すると、大量のフォローが見事に止まっただけでなく、それまでフォローしてくれた虚構アカウントがアンフォローしていくではありませんか!
歓喜はぬか喜びに終わりましたが、アカウントは無事正常な状態に戻りました。

一体この虚構アカウント群はボットが生成、運営しているのでしょうか?それともどこかの発展途上国で人力でわいわいと運営されているのでしょうか?何か不思議なものを見た気持ちです。