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 « J'aime »

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

1 « J'aime »

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

Salut Jeff, l’équipe - la quantité de spam que nous recevons est assez élevée, et nous avons environ 30 à 40 publications signalées pour examen quotidiennement. C’est beaucoup de clics répétitifs. Y a-t-il eu de nouvelles techniques introduites pour rendre cela moins fastidieux ?

Salut @kirupa

J’ai eu le même problème.

Nous avons examiné des milliers de publications/utilisateurs signalés automatiquement (par le système et Akismet) sur mon forum.
La précision du système et d’Akismet était très proche de 100 % (1 faux positif à ma connaissance pour 2500 signalements). Ce n’est pas le cas pour tous les forums, vous devez donc être sûr de ce que vous faites si vous souhaitez automatiser le bannissement des utilisateurs signalés automatiquement.

Finalement, j’ai créé un script PHP utilisant les données d’un webhook Discourse :

J’ai d’abord créé le webhook :

Ensuite, j’ai utilisé Use Discourse webhooks with PHP pour recevoir la requête et analyser les données.

J’ai ajouté du code personnalisé pour déclencher le bannissement automatique en envoyant une requête API à Discourse, basée sur des critères arbitraires :

Voici le code final :

<?php

// Vérifier immédiatement l'authenticité de la requête.
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);
    
    // Pour des raisons de sécurité, configurez le webhook avec un secret dans Discourse et définissez-le ci-dessous.
    $discourse_payload_secret = 'xxxxxxxxxxxxxxxxxxxxx';
    
    // Vérifier que la requête a été envoyée par un webhook autorisé.
    if (hash_hmac('sha256', $discourse_payload_raw, $discourse_payload_secret) == $discourse_payload_sha256) {
        echo 'reçu';
    }
    else {
        die('authentification échouée');
    }
}
else {
    die('accès refusé');
}

// Préparer la charge utile pour utilisation dans le script PHP.
$discourse_json = json_decode($discourse_payload_raw);

$reviewable = $discourse_json->reviewable;

// Définir l'URL de l'API
$api_url = "https://unicyclist.com/review/$reviewable->id/perform/delete_user?version=0";

// Vérifier que les propriétés "type" et "score" sont valides
if (($reviewable->type == "ReviewableUser" || $reviewable->type == "ReviewableAkismetUser" || $reviewable->type == "ReviewableQueuedPost") && $reviewable->score > 0) {
  // Configurer les options curl
    $options = array(
        CURLOPT_URL => $api_url,
        CURLOPT_RETURNTRANSFER => true,
        CURLOPT_CUSTOMREQUEST => "PUT", // Définir la méthode de requête sur PUT
        CURLOPT_HTTPHEADER => array(
            "Api-Key: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
            "Api-Username: system"
        )
    );
    // Initialiser la session curl
    $curl = curl_init();
    curl_setopt_array($curl, $options);
    // Effectuer l'appel API
    $response = curl_exec($curl);
    curl_close($curl);
    // Décoder la réponse
    $response_data = json_decode($response);
    print_r($response_data);
}   else {
    exit;
}

?>

Cela fonctionne parfaitement jusqu’à présent.

:warning: Notez que mon code peut être très dangereux à utiliser dans un autre contexte et que le contenu doit être soigneusement réfléchi.

Par exemple, un signalement “ReviewableUser” peut être appliqué aux utilisateurs des forums qui ont besoin de valider manuellement les utilisateurs (je ne sais pas si c’est le cas, ce n’est qu’un exemple). D’autres forums pourraient avoir modifié les seuils de détection de spam dans leurs paramètres, ou la détection automatique pourrait simplement être moins précise sur leur forum.

3 « J'aime »

Merci de partager - je pourrais avoir à utiliser quelque chose comme ça ! J’aimerais que Discourse prenne en charge ce flux de travail automatiquement :slight_smile:

J’utilise la solution de @Canapin sur mon forum Discourse personnel, mais j’ai également une instance séparée configurée pour une autre entreprise. Je préférerais ne pas utiliser ce script sur leur solution.

Y a-t-il une mise à jour de l’équipe Discourse concernant des approches alternatives ? Ceci s’applique aussi bien aux enregistrements signalés qu’aux publications signalées comme spam :

Pour l’instant, nous n’avons rien prévu pour ajouter des actions groupées à la file d’attente de révision, mais si vous pouviez créer une demande de fonctionnalité (Feature request) pour cela, nous pourrions plus facilement évaluer la popularité de la suggestion, ce qui pourrait lui attirer plus d’attention.