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 Mi Piace

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

1 Mi Piace

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

Ciao Jeff, team, la quantità di spam che riceviamo è piuttosto elevata e abbiamo circa 30-40 post contrassegnati per la revisione ogni giorno. È un sacco di clic ripetitivi. Sono state introdotte nuove tecniche per rendere questo meno noioso?

Ciao @kirupa

Mi è capitato di avere in qualche modo lo stesso problema.

Abbiamo esaminato migliaia di post/utenti segnalati automaticamente (di sistema e Akismet) sul mio forum.
L’accuratezza di entrambi, di sistema e Akismet, era molto vicina al 100% (1 falso positivo a mia conoscenza su 2500 segnalazioni). Non è così per ogni forum, quindi devi essere sicuro di ciò che stai facendo se vuoi automatizzare il ban degli utenti segnalati automaticamente.

Alla fine, ho creato uno script PHP utilizzando i dati di un webhook di Discourse:

Ho prima creato il webhook:

Poi ho usato Use Discourse webhooks with PHP per ricevere la richiesta e analizzare i dati.

Ho aggiunto codice personalizzato per attivare il ban automatico inviando una richiesta API a Discourse, basata su criteri arbitrari:

Ecco il codice finale:

<?php

// Verifica immediatamente l'autenticità della richiesta.
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);
    
    // Per sicurezza, configura il webhook con un segreto in Discourse e impostalo qui sotto.
    $discourse_payload_secret = 'xxxxxxxxxxxxxxxxxxxxx';
    
    // Verifica che la richiesta sia stata inviata da un webhook autorizzato.
    if (hash_hmac('sha256', $discourse_payload_raw, $discourse_payload_secret) == $discourse_payload_sha256) {
        echo 'ricevuto';
    }
    else {
        die('autenticazione fallita');
    }
}
else {
    die('accesso negato');
}

// Prepara il payload per l'uso nello script PHP.
$discourse_json = json_decode($discourse_payload_raw);

$reviewable = $discourse_json->reviewable;

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

// Verifica che le proprietà "type" e "score" siano valide
if (($reviewable->type == "ReviewableUser" || $reviewable->type == "ReviewableAkismetUser" || $reviewable->type == "ReviewableQueuedPost") && $reviewable->score > 0) {
  // Imposta le opzioni curl
    $options = array(
        CURLOPT_URL => $api_url,
        CURLOPT_RETURNTRANSFER => true,
        CURLOPT_CUSTOMREQUEST => "PUT", // Imposta il metodo di richiesta su PUT
        CURLOPT_HTTPHEADER => array(
            "Api-Key: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
            "Api-Username: system"
        )
    );
    // Inizializza la sessione curl
    $curl = curl_init();
    curl_setopt_array($curl, $options);
    // Effettua la chiamata API
    $response = curl_exec($curl);
    curl_close($curl);
    // Decodifica la risposta
    $response_data = json_decode($response);
    print_r($response_data);
}   else {
    exit;
}

?>

Finora funziona perfettamente.

:warning: Nota che il mio codice potrebbe essere molto pericoloso da usare in un altro contesto e il contenuto deve essere valutato attentamente.

Ad esempio, una segnalazione “ReviewableUser” potrebbe essere impostata su utenti nei forum che necessitano di validare manualmente gli utenti (non so se sia il caso, è solo un esempio). Altri forum potrebbero aver modificato le soglie di rilevamento spam nelle loro impostazioni, o il rilevamento automatico potrebbe semplicemente essere meno accurato sul loro forum.

3 Mi Piace

Grazie per la condivisione: potrei dover usare qualcosa di simile! Vorrei che Discourse supportasse questo flusso di lavoro automaticamente :slight_smile:

Sto utilizzando la soluzione di @Canapin sul mio forum Discourse personale, ma ho anche un’istanza separata configurata per un’altra azienda. Preferirei non utilizzare questo script sulla loro soluzione.

Ci sono aggiornamenti dal team di Discourse riguardo ad approcci alternativi? Questo vale sia per le registrazioni contrassegnate che per i post contrassegnati come spam:

Al momento non abbiamo in programma di aggiungere azioni di massa alla coda di revisione, ma se potessi creare una richiesta di funzionalità (Feature request) potremmo valutare più facilmente la popolarità del suggerimento, il che potrebbe attirare maggiore attenzione.