Mastodonのスパムアカウント投稿を削除するスクリプト - Delete spam account posts on Mastodon
3 min read
こんにちは、無能です。
マストドンのスパムが酷いので削除スクリプトを置いておきます。
あくまでスパムユーザを削除するものではありません。投稿やすでに届いた通知を消すものです。
なお、使用に関する保証は出来ないので自己責任でお願い致します。
https://github.com/haturatu/mastodon-spam-remove/blob/master/spam_remove.rb
私の環境
Devuan + Mastodon 4.2.7 + Ruby 3.2.0
使い方
※安全の為にMastodonユーザにスイッチするか、sudo -u mastodonで作業するか、最後にchown mastodon:mastodn spam_remove.rbで所有者権限を常にMastodonユーザで作業を行ってください。
また、DBやMastodonのバックアップを忘れずに行ってください。
スクリプトをwgetまたはコピー&ペーストする。
以下を使っているマストドンのディレクトリにあるenvironmentがあるパスに変更する。
require_relative '/your/mastodon/live/config/environment'
判定は以下だけで行っています。
現状でメンションの@メンションの数で判定しています。
def spam_detected?(message)
message.scan(/@/).size >= 5
end
保存して実行権限を与えます。
chmod +x spam_remove.rb
実行します。
./spam_remove.rb
投稿が多ければかなりの時間を要するので、気をつけてください。
正常に動作するのであればcrontab -eで定期的に実行させましょう。
rootユーザのcrontabの場合
0 */4 * * * sudo -u mastodon /your/which/ruby/path/shims/ruby /your/file/path/spam_block.rb
Mastodonユーザの場合
0 */4 * * * /your/which/ruby/path/shims/ruby /your/file/path/spam_block.rb
上記では4時間起きにスクリプトが実行されます。
投稿等に@マークが5個以上あるものが消されるので、過去の通常の投稿で@が5個である場合でも削除されます。判定条件を変更することで対処してください。
AI Translate
For safety, please ensure that you switch to the Mastodon user or use sudo -u mastodon
to perform the operation. Lastly, ensure that you always perform the operation with the ownership permissions set to the Mastodon user by running chown mastodon:mastodon spam_remove.rb
. Also, remember to backup your DB and Mastodon before proceeding.
Fetch the script using wget or copy & paste it.
Change the path to the environment
located in the Mastodon directory you are using.
require_relative '/your/mastodon/live/config/environment'
The detection is based solely on the number of mentions in a message.
def spam_detected?(message) message.scan(/@/).size >= 5 end
Save and grant execution permissions.
chmod +x spam_remove.rb
Execute the script.
./spam_remove.rb
Be cautious as it may take considerable time if there are many posts.
If it operates correctly, schedule it to run periodically with crontab -e
.(root crontab)
0 */4 * * * sudo -u mastodon /your/which/ruby/path/shims/ruby /your/file/path/spam_block.rb
For mastodon user crontab
0 */4 * * * /your/which/ruby/path/shims/ruby /your/file/path/spam_block.rb
In the above example, the script will run every 4 hours.
Posts with five or more @ marks will be deleted, even if they are regular posts with five @ marks in the past. Adjust the detection criteria accordingly.