Este Mod, mediante una serie de "complicaciones", evita que los Bots se registren.
Los bots tendrán que enfrentarse a esto:

El problema es que para pasar el control deberán:
- Escribir el código correcto en la casilla correcta
- Marcar la opción de la izquierda del cuadro
- Dejar los demás campos en blanco
Si alguien falla, le saltará un error indicando el código que hay que introducir y en qué ha fallado. En el caso del robot, no podrá leer la información (no es humano).
Instalación de Bot Scarecrow Mod
He comprobado su funcionamiento en los sistemas que más me gustan. No es válido para phpBB3.
- phpBB2 y phpBB2 Plus
Spoiler
Código: Seleccionar todo
##############################################################
## MOD Title: Bot Scarecrow
## MOD Author: KasLimon < N/A > (N/A) http://www.customphpbb.es
## MOD Description: Este Mod trata de evitar los registros de Bots mediante un conjunto de opciones de las que se debe
## marcar sólo una, rellenar un campo con unos datos determinados y dejar los demás campos en
## blanco. El campo a rellenar cambia de orden al azar y el nombre y cantidad lo define el usuario.
##
## MOD Version: 0.0.1-beta
##
## Installation Level: Easy
## Installation Time: 2 Minutes
##
## Files To Edit: (5)
## includes/constants.php
## includes/usercp_register.php
## language/lang_english/lang_main.php
## language/lang_spanish/lang_main.php
## templates/subSilver/profile_add_body.tpl
##
## Included Files: (0)
##
## License: http://opensource.org/licenses/gpl-license.php GNU General Public License v2
##############################################################
#
#-----[ OPEN ]------------------------------------------
#
includes/constants.php
#
#-----[ FIND ]------------------------------------------
#
?>
#
#-----[ BEFORE, ADD ]------------------------------------------
#
// Bot Scarecrow - BEGIN
define('RANDOM_REGISTER_SELECTOR', 'klmcpbb');// Cambie klmcpbb por cualquier cosa.
define('RANDOM_REGISTER_VALUE', '1708');// Cambie 1708 por cualquier número (tenga en cuenta que no sea muy largo).
define('CS_BOXES', 4);// Por defecto se harán 4 cajas, en caso de necesidad, cambie este número.
// Bot Scarecrow - END
#
#-----[ OPEN ]------------------------------------------
#
includes/usercp_register.php
#
#-----[ FIND ]------------------------------------------
#
rawurlencode($website);
}
#
#-----[ AFTER, ADD ]------------------------------------------
#
// Bot Scarecrow - BEGIN
if($mode == 'register')
{
// check for the right box selection
if ($HTTP_POST_VARS[RANDOM_REGISTER_SELECTOR] != $board_config['max_sig_chars'] . RANDOM_REGISTER_VALUE)
{
$error = TRUE;
$error_msg .= ( ( isset($error_msg) ) ? '<br />' : '' ) . $lang['CCS_fail2'];
}
// check for VIP code
if ($HTTP_POST_VARS[RANDOM_REGISTER_SELECTOR . 'vc'] != RANDOM_REGISTER_VALUE)
{
$error = TRUE;
$error_msg .= ( ( isset($error_msg) ) ? '<br />' : '' ) . sprintf($lang['CCS_fail1'], RANDOM_REGISTER_VALUE) . '.';
}
// now check the other boxes are empty
for ($cs=1; $cs <= CS_BOXES; $cs++)
{
if (!empty($HTTP_POST_VARS[RANDOM_REGISTER_SELECTOR . $cs . 'vc']))
{
$error = TRUE;
$error_msg .= ( ( isset($error_msg) ) ? '<br />' : '' ) . $lang['CCS_fail3'];
}
}
}
// Bot Scarecrow - END
#
#-----[ FIND ]------------------------------------------
#
$template->assign_block_vars('switch_confirm', array());
}
#
#-----[ AFTER, ADD ]------------------------------------------
#
// Bot Scarecrow - BEGIN
if ($mode == 'register')
{
$cs_boxes = CS_BOXES;
$cs_correct = rand(1, $cs_boxes);
for ($cs=1; $cs <= $cs_boxes; $cs++)
{
$cs_html .= '<input type="radio" value="';
if ($cs == $cs_correct)
{
$cs_html .= $board_config['max_sig_chars'] . RANDOM_REGISTER_VALUE;
}
else
{
$cs_html .= $board_config['max_sig_chars'] . $cs . RANDOM_REGISTER_VALUE;
}
$cs_html .= '" name="'.RANDOM_REGISTER_SELECTOR.'" /> '.(($cs == $cs_correct) ? $lang['Write'] .' <b>'.RANDOM_REGISTER_VALUE.'</b>': $lang['dontWrite']). ' ' . $lang['here'] . ': <input type="text" value="" name="';
if ($cs == $cs_correct)
{
$cs_html .= RANDOM_REGISTER_SELECTOR . 'vc';
}
else
{
$cs_html .= RANDOM_REGISTER_SELECTOR . $cs . 'vc';
}
$cs_html .= '" />';
if ($cs != $cs_boxes) $cs_html .= '<br />';
}
$cs_html = '<span class="gensmall">' . $cs_html . '</span>';
$template->assign_block_vars('switch_bots_cs', array(
'SELECTBOX' => $cs_html,
'L_CONFIRM_CODE_SELECTOR' => $lang['CCS'],
'L_CONFIRM_CODE_SELECTOR_E' => $lang['CCSE'])
);
}
// Bot Scarecrow - END
#
#-----[ OPEN ]------------------------------------------
#
language/lang_english/lang_main.php
#
#-----[ FIND ]------------------------------------------
#
?>
#
#-----[ BEFORE, ADD ]------------------------------------------
#
// Bot Scarecrow - BEGIN
$lang['Write'] = 'Write';
$lang['dontWrite'] = 'Don\'t write';
$lang['here'] = 'here';
$lang['CCS'] = 'Verification code';
$lang['CCSE'] = 'Please write the code specified in the correct box and activate the radio on the left and you\'ll be allowed to register here, otherwise, your register will be denied.';
$lang['CCS_fail1'] = 'Your code is wrong. The correct one is %s.';
$lang['CCS_fail2'] = 'You haven\'t selected the appropiate confirmation box. You\'ve not passed the anti robot control.';
$lang['CCS_fail3'] = 'Please write ONLY in the specified box.';
// Bot Scarecrow - END
#
#-----[ OPEN ]------------------------------------------
#
language/lang_spanish/lang_main.php
#
#-----[ FIND ]------------------------------------------
#
?>
#
#-----[ BEFORE, ADD ]------------------------------------------
#
// Bot Scarecrow - BEGIN
$lang['Write'] = 'Escriba';
$lang['dontWrite'] = 'No escriba';
$lang['here'] = 'aquí';
$lang['CCS'] = 'Código de verificación';
$lang['CCSE'] = 'Escriba el código que se indica en el cuadro que se indica y seleccione el botón de su izquierda y tendrá permiso para registrarse, en caso contrario, su petición será denegada.';
$lang['CCS_fail1'] = 'Su código de verificación es incorrecto. El código correcto es %s.';
$lang['CCS_fail2'] = 'No ha seleccionado la opción correcta de la confirmación. No se ha pasado el control anti robots.';
$lang['CCS_fail3'] = 'Escriba sólo en el cuadro especificado.';
// Bot Scarecrow - END
#
#-----[ OPEN ]------------------------------------------
#
templates/subSilver/profile_add_body.tpl
#
#-----[ FIND ]------------------------------------------
#
<!-- END switch_confirm -->
#
#-----[ AFTER, ADD ]------------------------------------------
#
<!-- BEGIN switch_bots_cs -->
<tr>
<td class="row1"><span class="gen">{switch_bots_cs.L_CONFIRM_CODE_SELECTOR}: * </span><br /><span class="gensmall">{switch_bots_cs.L_CONFIRM_CODE_SELECTOR_E}</span></td>
<td class="row2">{switch_bots_cs.SELECTBOX}</td>
</tr>
<!-- END switch_bots_cs -->
#
#-----[ SAVE/CLOSE ALL FILES ]------------------------------------------
#
# EoM
Spoiler
Código: Seleccionar todo
##############################################################
## MOD Title: Bot Scarecrow (for KMorph)
## MOD Author: KasLimon < N/A > (N/A) http://www.customphpbb.es
## MOD Description: Este Mod trata de evitar los registros de Bots mediante un conjunto de opciones de las que se debe
## marcar sólo una, rellenar un campo con unos datos determinados y dejar los demás campos en
## blanco. El campo a rellenar cambia de orden al azar y el nombre y cantidad lo define el usuario.
##
## MOD Version: 0.0.1-beta
##
## Installation Level: Easy
## Installation Time: 2 Minutes
##
## Files To Edit: (5)
## includes/constants.php
## includes/usercp_register.php
## language/lang_english/lang_main.php
## language/lang_spanish/lang_main.php
## templates/subSilver/profile_add_body.tpl
##
## Included Files: (0)
##
## License: http://opensource.org/licenses/gpl-license.php GNU General Public License v2
##############################################################
#
#-----[ OPEN ]------------------------------------------
#
includes/constants.php
#
#-----[ FIND ]------------------------------------------
#
?>
#
#-----[ BEFORE, ADD ]------------------------------------------
#
// Bot Scarecrow - BEGIN
define('RANDOM_REGISTER_SELECTOR', 'klmcpbb');// Cambie klmcpbb por cualquier cosa.
define('RANDOM_REGISTER_VALUE', '1708');// Cambie 1708 por cualquier número (tenga en cuenta que no sea muy largo).
define('CS_BOXES', 4);// Por defecto se harán 4 cajas, en caso de necesidad, cambie este número.
// Bot Scarecrow - END
#
#-----[ OPEN ]------------------------------------------
#
includes/usercp_register.php
#
#-----[ FIND ]------------------------------------------
#
rawurlencode($website);
}
#
#-----[ AFTER, ADD ]------------------------------------------
#
// Bot Scarecrow - BEGIN
if($mode == 'register')
{
// check for the right box selection
if ($HTTP_POST_VARS[RANDOM_REGISTER_SELECTOR] != $board_config['max_sig_chars'] . RANDOM_REGISTER_VALUE)
{
$error = TRUE;
$error_msg .= ( ( isset($error_msg) ) ? '<br />' : '' ) . $lang['CCS_fail2'];
}
// check for VIP code
if ($HTTP_POST_VARS[RANDOM_REGISTER_SELECTOR . 'vc'] != RANDOM_REGISTER_VALUE)
{
$error = TRUE;
$error_msg .= ( ( isset($error_msg) ) ? '<br />' : '' ) . sprintf($lang['CCS_fail1'], RANDOM_REGISTER_VALUE) . '.';
}
// now check the other boxes are empty
for ($cs=1; $cs <= CS_BOXES; $cs++)
{
if (!empty($HTTP_POST_VARS[RANDOM_REGISTER_SELECTOR . $cs . 'vc']))
{
$error = TRUE;
$error_msg .= ( ( isset($error_msg) ) ? '<br />' : '' ) . $lang['CCS_fail3'];
}
}
}
// Bot Scarecrow - END
#
#-----[ FIND ]------------------------------------------
#
$template->assign_block_vars('switch_viewonline', array());
}
#
#-----[ AFTER, ADD ]------------------------------------------
#
// Bot Scarecrow - BEGIN
if ($mode == 'register')
{
$cs_boxes = CS_BOXES;
$cs_correct = rand(1, $cs_boxes);
for ($cs=1; $cs <= $cs_boxes; $cs++)
{
$cs_html .= '<input type="radio" value="';
if ($cs == $cs_correct)
{
$cs_html .= $board_config['max_sig_chars'] . RANDOM_REGISTER_VALUE;
}
else
{
$cs_html .= $board_config['max_sig_chars'] . $cs . RANDOM_REGISTER_VALUE;
}
$cs_html .= '" name="'.RANDOM_REGISTER_SELECTOR.'" /> '.(($cs == $cs_correct) ? $lang['Write'] .' <b>'.RANDOM_REGISTER_VALUE.'</b>': $lang['dontWrite']). ' ' . $lang['here'] . ': <input type="text" value="" name="';
if ($cs == $cs_correct)
{
$cs_html .= RANDOM_REGISTER_SELECTOR . 'vc';
}
else
{
$cs_html .= RANDOM_REGISTER_SELECTOR . $cs . 'vc';
}
$cs_html .= '" />';
if ($cs != $cs_boxes) $cs_html .= '<br />';
}
$cs_html = '<span class="gensmall">' . $cs_html . '</span>';
$template->assign_block_vars('switch_cpl_reg_info.switch_bots_cs', array(
'SELECTBOX' => $cs_html,
'L_CONFIRM_CODE_SELECTOR' => $lang['CCS'],
'L_CONFIRM_CODE_SELECTOR_E' => $lang['CCSE'])
);
}
// Bot Scarecrow - END
#
#-----[ OPEN ]------------------------------------------
#
language/lang_english/lang_main.php
#
#-----[ FIND ]------------------------------------------
#
?>
#
#-----[ BEFORE, ADD ]------------------------------------------
#
// Bot Scarecrow - BEGIN
$lang['Write'] = 'Write';
$lang['dontWrite'] = 'Don\'t write';
$lang['here'] = 'here';
$lang['CCS'] = 'Verification code';
$lang['CCSE'] = 'Please write the code specified in the correct box and activate the radio on the left and you\'ll be allowed to register here, otherwise, your register will be denied.';
$lang['CCS_fail1'] = 'Your code is wrong. The correct one is %s.';
$lang['CCS_fail2'] = 'You haven\'t selected the appropiate confirmation box. You\'ve not passed the anti robot control.';
$lang['CCS_fail3'] = 'Please write ONLY in the specified box.';
// Bot Scarecrow - END
#
#-----[ OPEN ]------------------------------------------
#
language/lang_spanish/lang_main.php
#
#-----[ FIND ]------------------------------------------
#
?>
#
#-----[ BEFORE, ADD ]------------------------------------------
#
// Bot Scarecrow - BEGIN
$lang['Write'] = 'Escriba';
$lang['dontWrite'] = 'No escriba';
$lang['here'] = 'aquí';
$lang['CCS'] = 'Código de verificación';
$lang['CCSE'] = 'Escriba el código que se indica en el cuadro que se indica y seleccione el botón de su izquierda y tendrá permiso para registrarse, en caso contrario, su petición será denegada.';
$lang['CCS_fail1'] = 'Su código de verificación es incorrecto. El código correcto es %s.';
$lang['CCS_fail2'] = 'No ha seleccionado la opción correcta de la confirmación. No se ha pasado el control anti robots.';
$lang['CCS_fail3'] = 'Escriba sólo en el cuadro especificado.';
// Bot Scarecrow - END
#
#-----[ OPEN ]------------------------------------------
#
templates/subSilver/profile_add_body.tpl
#
#-----[ FIND ]------------------------------------------
#
<!-- END switch_confirm -->
#
#-----[ AFTER, ADD ]------------------------------------------
#
<!-- BEGIN switch_bots_cs -->
<tr>
<td class="row1"><span class="gen">{switch_cpl_reg_info.switch_bots_cs.L_CONFIRM_CODE_SELECTOR}: * </span><br /><span class="gensmall">{switch_cpl_reg_info.switch_bots_cs.L_CONFIRM_CODE_SELECTOR_E}</span></td>
<td class="row2">{switch_cpl_reg_info.switch_bots_cs.SELECTBOX}</td>
</tr>
<!-- END switch_bots_cs -->
#
#-----[ SAVE/CLOSE ALL FILES ]------------------------------------------
#
# EoM
Spoiler
Código: Seleccionar todo
##############################################################
## MOD Title: Bot Scarecrow (for Icy Phoenix)
## MOD Author: KasLimon < N/A > (N/A) http://www.customphpbb.es
## MOD Description: Este MOD trata de evitar los registros de Bots mediante un conjunto de opciones de las que se debe
## marcar sólo una, rellenar un campo con unos datos determinados y dejar los demás campos en
## blanco. El campo a rellenar cambia de orden al azar y el nombre y cantidad lo define el usuario.
##
## MOD Version: 0.0.1-beta
##
## Installation Level: Easy
## Installation Time: 2 Minutes
##
## Files To Edit: (5)
## includes/constants.php
## includes/usercp_register.php
## language/lang_english/lang_main.php
## language/lang_spanish/lang_main.php
## templates/mg_themes/profile_register_body.tpl
##
## Included Files: (0)
##
## License: http://opensource.org/licenses/gpl-license.php GNU General Public License v2
##############################################################
#
#-----[ OPEN ]------------------------------------------
#
includes/constants.php
#
#-----[ FIND ]------------------------------------------
#
?>
#
#-----[ BEFORE, ADD ]------------------------------------------
#
// Bot Scarecrow - BEGIN
define('RANDOM_REGISTER_SELECTOR', 'klmcpbb');// Cambie klmcpbb por cualquier cosa.
define('RANDOM_REGISTER_VALUE', '1708');// Cambie 1708 por cualquier número (tenga en cuenta que no sea muy largo).
define('CS_BOXES', 4);// Por defecto se harán 4 cajas, en caso de necesidad, cambie este número.
// Bot Scarecrow - END
#
#-----[ OPEN ]------------------------------------------
#
includes/usercp_register.php
#
#-----[ FIND ]------------------------------------------
#
rawurlencode($website);
}
#
#-----[ AFTER, ADD ]------------------------------------------
#
// Bot Scarecrow - BEGIN
if($mode == 'register')
{
// check for the right box selection
if ($HTTP_POST_VARS[RANDOM_REGISTER_SELECTOR] != $board_config['max_sig_chars'] . RANDOM_REGISTER_VALUE)
{
$error = TRUE;
$error_msg .= ( ( isset($error_msg) ) ? '<br />' : '' ) . $lang['CCS_fail2'];
}
// check for VIP code
if ($HTTP_POST_VARS[RANDOM_REGISTER_SELECTOR . 'vc'] != RANDOM_REGISTER_VALUE)
{
$error = TRUE;
$error_msg .= ( ( isset($error_msg) ) ? '<br />' : '' ) . sprintf($lang['CCS_fail1'], RANDOM_REGISTER_VALUE) . '.';
}
// now check the other boxes are empty
for ($cs=1; $cs <= CS_BOXES; $cs++)
{
if (!empty($HTTP_POST_VARS[RANDOM_REGISTER_SELECTOR . $cs . 'vc']))
{
$error = TRUE;
$error_msg .= ( ( isset($error_msg) ) ? '<br />' : '' ) . $lang['CCS_fail3'];
}
}
}
// Bot Scarecrow - END
#
#-----[ FIND ]------------------------------------------
#
$template->assign_block_vars('switch_confirm', array());
}
#
#-----[ AFTER, ADD ]------------------------------------------
#
// Bot Scarecrow - BEGIN
if ($mode == 'register')
{
$cs_boxes = CS_BOXES;
$cs_correct = rand(1, $cs_boxes);
for ($cs=1; $cs <= $cs_boxes; $cs++)
{
$cs_html .= '<input type="radio" value="';
if ($cs == $cs_correct)
{
$cs_html .= $board_config['max_sig_chars'] . RANDOM_REGISTER_VALUE;
}
else
{
$cs_html .= $board_config['max_sig_chars'] . $cs . RANDOM_REGISTER_VALUE;
}
$cs_html .= '" name="'.RANDOM_REGISTER_SELECTOR.'" /> '.(($cs == $cs_correct) ? $lang['Write'] .' <b>'.RANDOM_REGISTER_VALUE.'</b>': $lang['dontWrite']). ' ' . $lang['here'] . ': <input type="text" value="" name="';
if ($cs == $cs_correct)
{
$cs_html .= RANDOM_REGISTER_SELECTOR . 'vc';
}
else
{
$cs_html .= RANDOM_REGISTER_SELECTOR . $cs . 'vc';
}
$cs_html .= '" />';
if ($cs != $cs_boxes) $cs_html .= '<br />';
}
$cs_html = '<span class="gensmall">' . $cs_html . '</span>';
$template->assign_block_vars('switch_bots_cs', array(
'SELECTBOX' => $cs_html,
'L_CONFIRM_CODE_SELECTOR' => $lang['CCS'],
'L_CONFIRM_CODE_SELECTOR_E' => $lang['CCSE'])
);
}
// Bot Scarecrow - END
#
#-----[ OPEN ]------------------------------------------
#
language/lang_english/lang_main.php
#
#-----[ FIND ]------------------------------------------
#
?>
#
#-----[ BEFORE, ADD ]------------------------------------------
#
// Bot Scarecrow - BEGIN
$lang['Write'] = 'Write';
$lang['dontWrite'] = 'Don\'t write';
$lang['here'] = 'here';
$lang['CCS'] = 'Verification code';
$lang['CCSE'] = 'Please write the code specified in the correct box and activate the radio on the left and you\'ll be allowed to register here, otherwise, your register will be denied.';
$lang['CCS_fail1'] = 'Your code is wrong. The correct one is %s.';
$lang['CCS_fail2'] = 'You haven\'t selected the appropiate confirmation box. You\'ve not passed the anti robot control.';
$lang['CCS_fail3'] = 'Please write ONLY in the specified box.';
// Bot Scarecrow - END
#
#-----[ OPEN ]------------------------------------------
#
language/lang_spanish/lang_main.php
#
#-----[ FIND ]------------------------------------------
#
?>
#
#-----[ BEFORE, ADD ]------------------------------------------
#
// Bot Scarecrow - BEGIN
$lang['Write'] = 'Escriba';
$lang['dontWrite'] = 'No escriba';
$lang['here'] = 'aquí';
$lang['CCS'] = 'Código de verificación';
$lang['CCSE'] = 'Escriba el código que se indica en el cuadro que se indica y seleccione el botón de su izquierda y tendrá permiso para registrarse, en caso contrario, su petición será denegada.';
$lang['CCS_fail1'] = 'Su código de verificación es incorrecto. El código correcto es %s.';
$lang['CCS_fail2'] = 'No ha seleccionado la opción correcta de la confirmación. No se ha pasado el control anti robots.';
$lang['CCS_fail3'] = 'Escriba sólo en el cuadro especificado.';
// Bot Scarecrow - END
#
#-----[ OPEN ]------------------------------------------
#
templates/mg_themes/profile_register_body.tpl
#
#-----[ FIND ]------------------------------------------
#
<!-- END switch_confirm -->
#
#-----[ AFTER, ADD ]------------------------------------------
#
<!-- BEGIN switch_bots_cs -->
<tr>
<td class="row1"><span class="gen">{switch_bots_cs.L_CONFIRM_CODE_SELECTOR}: * </span><br /><span class="gensmall">{switch_bots_cs.L_CONFIRM_CODE_SELECTOR_E}</span></td>
<td class="row2">{switch_bots_cs.SELECTBOX}</td>
</tr>
<!-- END switch_bots_cs -->
#
#-----[ SAVE/CLOSE ALL FILES ]------------------------------------------
#
# EoM
Spoiler
La configuración se edita al final del archivo includes/constants.php

Código: Seleccionar todo
define('CS_BOXES', 4);// Por defecto se harán 4 cajas, en caso de necesidad, cambie este número.

Código: Seleccionar todo
define('RANDOM_REGISTER_SELECTOR', 'klmcpbb');// Cambie klmcpbb por cualquier cosa.

Código: Seleccionar todo
define('RANDOM_REGISTER_VALUE', '1708');// Cambie 1708 por cualquier número (tenga en cuenta que no sea muy largo).
Cabe destacar que es recomendable activar la confirmación visual, además de la activación de cuentas por el usuario
Para acabar quiero aclarar que es un mod en fase Beta y que fue inspirado por el VIP Code Mod.
Salu2
