Bots

提供:ct777-wiki
Botから転送)
ナビゲーションに移動 検索に移動

Botを使い始めるまで[編集 | hide | hide all]

Vikipediaという過疎サイトがあるのだが、4月下旬から来襲したスパムにより約10000記事作成された。このサイトはアカウント作成をすでに規制していたので、攻撃法はたった一つのIPでひたすらページを作るというものであった。普通スパムはアカウントを濫造するが、アカウント作成が無理ならIPのまま乗り込んでくる模様。

また、4/27から8月下旬までずーっと同じIPなのには普通に驚いた。記憶の中では、ウソメタやVikipedia2017年のケースではどちらも世界各地のIPで苦労しただけに、そのIP一つブロックすれば終了というのは拍子抜けした。

問題は記事である。Special:Nukeから1200件ほど削除できたが、大量すぎるのと放置期間が長すぎた為残りは表示されず、8000本は一括削除不可能。当然手動はムリ。そこで思いついたのがBotを使う方法。すごく昔にインストールだけやった気がしないでもないが、PC買い換えでデータが消えていたため改めてググって試してみた。

導入[編集 | hide]

ボットの作動方式は運用者が指定したスクリプトに従って元々wikiに用意されているapi.phpに(半)自動的にアクセスし処理を実行するものなので、無理にBotを使わなくても自分でapi.phpにリクエストを送り付けてもよい。しかしトークンや出力結果が見にくく面倒なのでBotを使うのが定番だろう。

導入したのはやはり定番のmw:Pywikibot。PHPベースや他のPythonベースの仕組みもあったが、ウィキメディアプロジェクト全体で使われており安定性も高いPywikibotを選択した。

Pywikibotの名の通りPythonが導入済みであるのが必須条件である。Fandomのヘルプがかなり参考になった。 今後が楽になる作業などを除けば最低限必要なのは

  1. pip install pywikibot
  2. python generate_family_file.py
    • 次に、wikiのURLを入力
  3. python generate_user_files.py
    • 次に、使用するボット名を入力
  4. python pwb.py login
    • ボットのパスワードを入力

を打ち込むだけ。この後

python pwb.py <起動するスクリプト>

と書くだけで処理してくれる。非常に楽!

削除処理[編集 | hide]

Pywikibotの良いところは、既にいろいろ使えるスクリプトをセットにしてくれている点。基本的な作業ならすぐに実行できる。

今回は「とあるIPによる全投稿を削除」なので、delete.pyというスクリプトを使う。ちなみにMediaWiki.orgは解説に乏しく、英語版すら解説が用意されていないスクリプトもあるので注意が必要。このdelete.pyもWebの解説には利用者名を指定するオプション「usercontribs」が記載されておらず、無いのかと思って一瞬落胆した。ちゃんとしたヘルプを見るにはPCにダウンロードされた各スクリプトファイルを直接覗く必要がある。ちょっと不親切。

python pwb.py delete -usercontribs:<IP/利用者名> -pt:<作業間隔>
  • 「特定カテゴリに入った全てのページ」、「特定期間内に作成された全てのページ」、名前空間といった柔軟なオプションが選択可能。-pt:で作業間隔を設定でき、サーバーの状況を見て調整できる。デフォルト10秒。

実行風景[編集 | hide]

作業間隔10秒。

終わらないので2秒に。 <youtube> これでついにBot使いになりましたとさ。

たのしい[編集 | hide]

想像以上に楽で速くて気持ちいいので、他のサイト(Miraheze)でもやってみたい。

成り済まし目的でもない不要なサブアカウントがあるので、名前を変更してボット化する予定。

  • 藍上夫 - ct777.cf移行時の一時的なエラー回避目的。
  • 日本太陽公団 - ウソペディア参入時の超初期に使った名義。

Visions[編集 | hide]

  1. ようこそ自動貼り付け - よくある
  2. リンク切れ修正・除去 - よくある
    • 特にYouTube
  3. サンドボックスの砂慣らし - よくある
  4. 定 期 的 な 編 集 に よ る w i k i の 延 命 - ボットだけでも勝手に編集していたら活動休止期間中にもサイトの延命が可能?