twitter/twurl を使って一括スパム報告
よくわかんないんだけど、 アニメ公式アカウント関連ばっかりフォローすると、 胡散臭いアカウントに大量にフォローされる。
"@{anime title}fan" というIDで何かの宣伝しつつ、 特定の作品の画像を貼るみたいな、 明らかに同じ人たちが作っていて、 "@sarbantfan" なんかを見ると、 怪しいurlを貼るわけでもなく、 怪しい商品の宣伝をするわけもないし。
それはともかく、 はじめは一人ひとりスパム報告してたんだけど、 ちょっと忘れてたらもうweb上でそれをやるには面倒すぎる量になってた。 目方で量ると、フォロワ160人のほとんど半分がスパムだった。
$ twurl accounts
ampeloss
qnLRwkeo8zFjhIDfgG0F8Q
cympfh
qnLRwkeo8zFjhIDfgG0F8Q (default)
unddich
qnLRwkeo8zFjhIDfgG0F8Q
jsonなので, jq も使う。
フォロワの取得 (max 200 at a time)
$ twurl -X GET /1.1/followers/list.json?count=200 | jq -r '.users[].screen_name' > /tmp/ids
スパムしたい方がそうでないより少ないとして、
$ cp /tmp/ids /tmp/ids0
$ vim /tmp/ids
(スパムしたいアカウントの行を消す)
$ diff /tmp/ids0 /tmp/ids | grep '^<' | sed 's/^..//g' > /tmp/list
/tmp/list
が最終的に消したい人たち.
漏れがあると嫌なので、スパムの数を数えておいて、 予め、頭の中で引き算しておく。
$ wc -l /tmp/list
81 /tmp/list
これに対して /users/report_spam を叩きたいんだけど、 他同様、使用制限があるらしい。 でも、 https://dev.twitter.com/rest/public/rate-limits には載っていない。 素敵だ。
素敵なことは無視しよう。
$ cat /tmp/list | xargs -i twurl -X POST -d screen_name={} /1.1/users/report_spam.json
すぐに、
{"errors":[{"code":205,"message":"You are over the limit for spam reports."}]}
を返してきた。 ほとんど一度に、このAPIを叩けるのは 65 回らしい。
1 window は 15分らしいので、
$ tail -n `expr 81 - 65` /tmp/list > /tmp/list_rest
$ sleep 15m && cat /tmp/list_rest | xargs -i twurl -X POST -d screen_name={} /1.1/users/report_spam.json
として寝ます。
おやすみなさい。