Comentarios Recientes

Imágenes recientes

  • 100_0303_wm
    100_0303_wm
    3 Julio, 5:30am
  • cuauhtemoc_wm
    cuauhtemoc_wm
    3 Julio, 3:07am
  • Rojos, duros y macizos
    Rojos, duros y macizos
    1 Septiembre, 12:44pm
  • Cualquier carrera
    Cualquier carrera
    1 Septiembre, 12:44pm
  • Trenecito
    Trenecito
    1 Septiembre, 12:44pm
  • Baño gratis
    Baño gratis
    1 Septiembre, 12:44pm
  • Diversidad en el metro
    Diversidad en el metro
    1 Septiembre, 12:44pm
  • Lo que el viento se llevó
    Lo que el viento se llevó
    1 Septiembre, 6:55am
  • Nuevamente en casa
    Nuevamente en casa
    25 Mayo, 8:57pm
  • Viscocho
    Viscocho
    3 Febrero, 11:44pm

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://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

Stop Internet Explorer

Imagen Aleatoria

Imagen Aleatoria

Foto del mes


Conversación

  • Enrique Lopez: HOla, podria usar el imagen de la aguila para una portada de un libro?
     
  • miguel angel bacab p: que este mas bien
     
  • miguel angel bacab p: yo no tengo que decir mucho solo espero que este todo muy bonito
     
  • Generacion 2010-1: Gracias a nombre de la generación =D
     
  • Avially Hernandez: HOLA!! que milagro que actualizas tu página, oye no pude dejar comentario en el cartél de la UNAM. pero bueno, coincido contigo, el de medicina no fue muy bueno. te quiero mucho. nos vemos!!!
     
  • ESTHER BORUEL: podrias recomendarme algun lugar de renta para un estudiante de ciencias, ya sabes, que sea seguro
     
  • isai vega: hola q tal quiro conocer un emo
     

Escribe el código Captcha que estás viendo