Comentarios Recientes

Imágenes recientes

  • 100_2979
    100_2979
    22 Febrero, 6:17pm
  • 100_2977
    100_2977
    22 Febrero, 6:04pm
  • 100_2975
    100_2975
    22 Febrero, 5:59pm
  • 100_2974
    100_2974
    22 Febrero, 5:59pm
  • 100_2973
    100_2973
    22 Febrero, 5:46pm
  • 100_2972
    100_2972
    22 Febrero, 5:36pm
  • 100_2971
    100_2971
    22 Febrero, 5:36pm
  • 100_2970
    100_2970
    22 Febrero, 5:15pm
  • 100_2969
    100_2969
    22 Febrero, 5:15pm
  • 100_2968
    100_2968
    22 Febrero, 5:14pm

Haciendo experimentos para combatir el spam en el Chatbox

Como siempre comento no se programar pero me gusta hacerle al cuento.
Desde mi punto de vista el problema es que el filtro Bayes no hace del todo bien su función previo a guardar una entrada en el Chatbox, es decir una entrada que el Bayes va a guardar como spam de todos modos deja que se guarde en el Chatbox a menos que esta este repetida, en tal caso no la admite.
Como primera barrera e intento arcaico intenté esto en ChatboxModel.php función NewEntry, para que los mensajes con nombres y ip's conocidas como spam no les permitiera guardar la entrada (línea 278 apróx):

[code='PHP']
$params['ip'] = $ip;
$params['now'] = MDB2_Date::mdbNow();
$params['message_key'] = $message_key;

//Intento por filtrar el spam www.cuauhtemoc.org.mx. En algunas variables que van entre corchetes como "name" se confunde con el "name" del autor del post, por eso le puse "mas corchete", eso hay que quitarselo.

$sql_spam = "
SELECT
MAX(is_spam)
FROM [[bayes_source_references]]
WHERE
[[bayes_source_references]].author = {name mas corchete}
OR
[[bayes_source_references]].ip ={ip}";

$es_spam = $GLOBALS['db']->queryOne($sql_spam, $params);
if($es_spam < 1) { $sql = " INSERT INTO [[chatbox]] (id, name, email, url, message, message_key, ip, updatetime, createtime) VALUES ({id mas corchete}, {name mas corchete}, correo@cuauhtemoc.org.mx, {url}, {message}, {message_key}, {ip}, {now}, {now})"; $result = $GLOBALS['db']->query($sql, $params);
if (JawsError::IsError($result)) {
return new JawsError(_t('CHATBOX_ERROR_COULD_NOT_ADD_ENTRY'), _t('CHATBOX_NAME'));
}
$id = $this->LastInsertedComment($params['now'], $params['message_key']);
if ($id) {
if ($GLOBALS['app']->Registry->Get('/gadgets/Chatbox/use_antispam') == 'true') {
require_once JAWS_PATH.'include/Apis/JawsBayesSpamApi.php';

$bayes =& new JawsBayesSpamApi();
$bayes->Add($params['message'], 'Chatbox', $id, $params['name'], $params['ip']);
}
}
return true;
}

$id = $this->LastInsertedComment($params['now'], $params['message_key']);
if ($id) {
if ($GLOBALS['app']->Registry->Get('/gadgets/Chatbox/use_antispam') == 'true') {
require_once JAWS_PATH.'include/Apis/JawsBayesSpamApi.php';

$bayes =& new JawsBayesSpamApi();
$bayes->Add($params['message'], 'Chatbox', $id, $params['name'], $params['ip']);
}
}
return true;
}
//aquí termina la función NewEntry . Creo que hice un despapaye pero aún funciona
[/code]
Lo que pasó fue que me comenzaron a poner diferentes nombre e ip´s muy variadas, antes en realidad se repetían mucho. Revisando la tabla de bayes_source_references` y `bayes_references` noté que la mayoría los sigue marcando como spam automáticamente, aclaro que me he dado a la tarea de actualzar directa y constantemente en la base de datos que mensajes son spam y cuales no, en las tablas mencionadas cuando el filtro no lo hace, por eso se me ocurrio que talvez sería conveniente filtrar los mensajes que se muestran en eñ Chatbox aunque ya estén guardados, es decir, si está guardado en Chatbox pero está marcado como spam pues que no lo ponga; para esto la función que modifiqué en ChatboxModel fue GetClassifiedEntries haciendo que la consulta de los mensajes en ChatBox no regrese los marcados como spam, quedó así (línea 139 apróx):

[code='PHP']
function GetClassifiedEntries()
{
$limit = $GLOBALS['app']->Registry->Get('/gadgets/Chatbox/limit');
if (JawsError::IsError($limit) || is_null($limit)) {
$limit = 10;
}

$result = $GLOBALS['db']->setLimit($limit);
if (JawsError::IsError($result)) {
return new JawsError(_t('GLOBAL_ERROR_QUERY_FAILED', 'GetEntries'), _t('CHATBOX_NAME'));
}
//consulta que filtra los mensajes www.cuauhtemoc.org.mx
$sql = "
SELECT
chatbox.id as id, name, email, chatbox.ip as ip, url, message, updatetime
FROM chatbox
INNER JOIN bayes_source_references
ON bayes_source_references.sourceref_id = chatbox.id
INNER JOIN bayes_references
ON bayes_references.id = bayes_source_references.bayesref_id
WHERE bayes_source_references.is_spam = '0'
AND bayes_references.category_id = 'nospam'
ORDER BY id DESC";

$result = $GLOBALS['db']->queryAll($sql);
[/code]

Lo acabo de hacer y aún estoy esperando que llegue un mensaje (uno real, por que ya probé marcando unos manualmente) que el filtro marque automaticamente como spam para que ya no aparezca maniac.gif je je.

Espero que esta vez funcione mejor el experimento y que además les pueda servir a los demás Jawseros, si funciona quizá se pueda hacer algo parecido los comentarios en general mas adelante.


Trackback URI: http://www.cuauhtemoc.org.mx/index.php?trackback/175

#1 Re:Haciendo experimentos para combatir el spam en el Chatbox

ugg boots / 19 Enero, 5:46pm  
avatar

ugg classic cardy fig, ugg classic cardy fig
ugg classic cardy grey, ugg classic cardy grey
ugg classic cardy jacaranda, ugg classic cardy jacaranda

[ Responder (0) ]

Dejar un comentario

Escribe el código Captcha que estás viendo

Fuentes XML de comentario: RSS | Atom

Banners

Computlán - Equipo de cómputo, accesorios y soluciones
Jaws

Imagen Aleatoria

Imagen Aleatoria

Foto del mes


Conversación

  • jesus andreu: Soy cliente frecuente de ADO, hace muchos años, y ahora en la madrugada, me quede sorprendido del mal trato que me dieron las dos expendedoras de boletos
    en la estacion de Villa hermosa Tabasco
    a. Que no habia sistema y tal vez llegaria hasta las 6 de la mañana
    b que o estubiera pendiente de la llegada del autobus
    c. que simpre no me podian vender, porque no les habian dejado boletos manuales
    d. INCREIBLE TODO EL MAL TRATO QUE RECIBI Y EL TIEMPO QUE ME HICIERON PERDER:
     
  • Darian Lewis: We can increase rankings of your website in search engines. Please reply back for more details.
     
  • marco: buena onda hermano con los cuestionarios previos es buen paro para los apuros de laboratorio de quimica hehe atte: estudiante de ingenieria
     
  • carlos: ola soy koni y en stos momentos voy asia la ciudad d gomez
    me gusta mucho viajar e ir d compras me gusta comprar ropa d todos los colore y estilo.andar ala moda es mi stylo y nadie lo va a cambiar jajajajjajajajajajajajaj
     
  • RUBI: OLA SOY CHOKI
     
  • estefani: quien sos
     
  • julia: ola soy rizos
    chequen esto:
    risitos de oro bebe en todo los acompañara.
     

Escribe el código Captcha que estás viendo