Ich habe einer Website geholfen, die etwa 30 Spam-Beiträge pro Stunde erhalten hat. Wir haben KI-Spam aktiviert, aber das löste das Problem der vorhandenen Beiträge nicht. Hier ist, was ich getan habe. Das könnte für Sie funktionieren. Es wurde nicht auf Ihrer Website getestet, daher sollten Sie, wenn Sie eines davon tun, ein Backup erstellen und sicherstellen, dass es nicht so aussieht, als wäre es von einer KI geschrieben worden, die versucht, Ihre Website lahmzulegen.
Dies setzt voraus, dass Sie wissen, was Rails ist und wie man es ausführt. Wenn nicht, sollten Sie das wahrscheinlich nicht tun.
Zuerst sollten Sie Ihre Website in den Nur-Lese-Modus in Discourse versetzen, damit niemand etwas erstellt, während Sie einen schrecklichen Fehler machen. Dann erstellen Sie ein Backup. Das bedeutet, dass Sie bis zum Ausschalten des Nur-Lese-Modus sicher zu Ihrem Backup zurückkehren können.
Aktuelle Beiträge abrufen
Der Angriff begann vor etwas mehr als einem Tag, also ging ich zwei Tage zurück. Sie könnten auch Dinge wie 36.hours.ago tun, wenn Sie expliziter sein möchten. Wenn ich klüger wäre, hätte ich etwas getan, um Beiträge in PMs zu überspringen, aber ich entschied mich, mich nicht darum zu kümmern.
posts = Post.where("created_at >= ?", 2.days.ago)
.where(deleted_at: nil)
.where("user_id > ?", 1)
Rufe den SpamScanner für diese Beiträge auf
Ich bin mir nicht ganz sicher, was passiert ist, dass einige davon fehlschlugen, aber wenn Sie ein paar “Ups” erhalten, ist das wahrscheinlich kein Grund zur Sorge.
posts.each do |post|
begin
puts "https://talk.commonmark.org/p/#{post.id}"
DiscourseAi::AiModeration::SpamScanner.perform_scan(post)
rescue
puts "oops";
end;
sleep 0.2;
end
Beiträge abrufen, die jetzt überprüft werden müssen
Dies ruft überprüfbare Beiträge ab, die gerade als überprüfbar markiert wurden (vermutlich durch die obigen Aktionen). Wir wollen dies nicht blind auf Dinge anwenden, die nicht Teil dieses gefährlichen Abenteuers sind.
reviewables = Reviewable.where(status: "pending")
.where(potential_spam: true)
.where("created_at >= ?", 1.hour.ago)
.where("updated_at >= ?", 1.hour.ago)
Blind dem KI vertrauen
Natürlich haben Sie die versteckten Themen sorgfältig geprüft und sie sahen alle so aus, als wären sie wirklich Spam, also werden Sie es einfach durchziehen. Die Überschrift ist ein Witz. Sie vertrauen der KI nicht wirklich blind, oder?!?!
Dies wird die Beiträge löschen und die Benutzer löschen und blockieren. Es ist wirklich, wirklich gefährlich.
reviewables.each do |reviewable|
begin
puts "deleting https://talk.commonmark.org/t/#{reviewable.topic_id}"
if reviewable.topic.nil?
puts "already gone"
next
end
reviewable.perform(user, :delete_user_block)
rescue
puts "oops"
end
end