Way to bulk process/delete flagged registrations?

Hi everyone - for the past few days, our forums have been getting a lot of spam registrations that are properly being flagged for us to review. The problem is the large quantity of them every few hours:

Is there a way to quickly review and do a bulk edit so that we don’t have to click on each entry and click again to select the delete + ban option? That gets pretty tedious after some time.

2 „Gefällt mir“

As an alternative, can we just auto-delete users who fall into this category:

1 „Gefällt mir“

You are catching up on a backlog of old spam profiles. Once you fully catch up you should be ok.

Hallo Jeff, Team – die Menge an Spam, die wir erhalten, ist ziemlich hoch, und wir haben täglich etwa 30-40 Beiträge zur Überprüfung markiert. Das ist viel repetitives Punkt-und-Klick. Wurden neue Techniken eingeführt, um dies weniger mühsam zu gestalten?

Hallo @kirupa

Ich bin zufällig auf ein ähnliches Problem gestoßen.

Wir haben Tausende von automatisch markierten (System und Akismet) Beiträgen/Benutzern in unserem Forum überprüft.
Die Genauigkeit von System und Akismet lag sehr nahe bei 100 % (nach meinem Wissen 1 False Positive bei 2500 Markierungen). Das ist nicht auf jedem Forum der Fall, daher müssen Sie sicher sein, was Sie tun, wenn Sie das automatische Bannen von automatisch markierten Benutzern automatisieren möchten.

Am Ende habe ich ein PHP-Skript mit Discourse-Webhook-Daten erstellt:

Ich habe zuerst den Webhook erstellt:

Dann habe ich Use Discourse webhooks with PHP verwendet, um die Anfrage zu empfangen und die Daten zu parsen.

Ich habe benutzerdefinierten Code hinzugefügt, um den automatischen Bann auszulösen, indem ich eine API-Anfrage an Discourse gesendet habe, basierend auf beliebigen Kriterien:

Hier ist der endgültige Code:

<?php

// Überprüfen Sie sofort die Authentizität der Anfrage.
if (array_key_exists('HTTP_X_DISCOURSE_EVENT_SIGNATURE', $_SERVER)) {
    $discourse_payload_raw = file_get_contents('php://input');
    $discourse_payload_sha256 = substr($_SERVER['HTTP_X_DISCOURSE_EVENT_SIGNATURE'], 7);
    
    // Aus Sicherheitsgründen konfigurieren Sie den Webhook mit einem Geheimnis in Discourse und setzen Sie es unten.
    $discourse_payload_secret = 'xxxxxxxxxxxxxxxxxxxxx';
    
    // Überprüfen Sie, ob die Anfrage von einem autorisierten Webhook gesendet wurde.
    if (hash_hmac('sha256', $discourse_payload_raw, $discourse_payload_secret) == $discourse_payload_sha256) {
        echo 'received';
    }
    else {
        die('authentication failed');
    }
}
else {
    die('access denied');
}

// Bereiten Sie die Nutzlast für die Verwendung im PHP-Skript vor.
$discourse_json = json_decode($discourse_payload_raw);

$reviewable = $discourse_json->reviewable;

// Richten Sie die API-URL ein
$api_url = "https://unicyclist.com/review/$reviewable->id/perform/delete_user?version=0";

// Überprüfen Sie, ob die Eigenschaften "type" und "score" gültig sind
if (($reviewable->type == "ReviewableUser" || $reviewable->type == "ReviewableAkismetUser" || $reviewable->type == "ReviewableQueuedPost") && $reviewable->score > 0) {
  // Richten Sie die Curl-Optionen ein
    $options = array(
        CURLOPT_URL => $api_url,
        CURLOPT_RETURNTRANSFER => true,
        CURLOPT_CUSTOMREQUEST => "PUT", // Setzen Sie die Anfragemethode auf PUT
        CURLOPT_HTTPHEADER => array(
            "Api-Key: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
            "Api-Username: system"
        )
    );
    // Initialisieren Sie die Curl-Sitzung
    $curl = curl_init();
    curl_setopt_array($curl, $options);
    // Führen Sie den API-Aufruf durch
    $response = curl_exec($curl);
    curl_close($curl);
    // Dekodieren Sie die Antwort
    $response_data = json_decode($response);
    print_r($response_data);
}   else {
    exit;
}

?>

Es funktioniert bisher perfekt.

:warning: Beachten Sie, dass mein Code in einem anderen Kontext sehr gefährlich sein kann und der Inhalt sorgfältig durchdacht werden muss.

Zum Beispiel kann ein “ReviewableUser”-Flag für Benutzer in Foren gesetzt werden, die Benutzer manuell validieren müssen (ich weiß nicht, ob das der Fall ist, es ist nur ein Beispiel). Andere Foren könnten die Schwellenwerte für die Spam-Erkennung in ihren Einstellungen geändert haben, oder die automatische Erkennung könnte auf ihrem Forum einfach weniger genau sein.

3 „Gefällt mir“

Danke fürs Teilen – vielleicht muss ich so etwas verwenden! Ich wünschte, Discourse würde diesen Workflow automatisch unterstützen :slight_smile:

Ich verwende @Canapin’s Lösung auf meinem persönlichen Discourse, habe aber auch eine separate Instanz für ein anderes Unternehmen eingerichtet. Ich würde dieses Skript lieber nicht für deren Lösung verwenden.

Gibt es ein Update vom Discourse-Team zu alternativen Ansätzen? Dies gilt sowohl für markierte Registrierungen als auch für als Spam markierte Beiträge:

Wir haben bisher nichts für das Hinzufügen von Massenaktionen zur Überprüfungswarteschlange geplant, aber wenn Sie eine Feature request dafür erstellen könnten, könnten wir die Beliebtheit des Vorschlags leichter einschätzen, was ihm möglicherweise mehr Aufmerksamkeit verschaffen könnte.