Go Back   vb.org Archive > vBulletin Modifications > vBulletin 4.x Modifications > vBulletin 4.x Add-ons
FAQ Community Calendar Today's Posts Search

Reply
 
Thread Tools
Spambot Stopper - Prevent Spambots from Registering Details »»
Spambot Stopper - Prevent Spambots from Registering
Version: 1.1.1, by kh99 kh99 is offline
Developer Last Online: Sep 2020 Show Printable Version Email this Page

Category: Anti-Spam Options - Version: 4.x.x Rating:
Released: 01-31-2013 Last Update: 02-15-2013 Installs: 443
Uses Plugins Auto-Templates
Re-useable Code Translations  
No support by the author.

What is it?
----------------------------
This mod rejects registrations where the form is filled out in less than a minimum time. You can configure one of the following actions to be taken when an automated registration is detected:

- Show a "No Permissions" page
- Display the "Successful Registration" message but without creating an account
- Redirect the user to any URL you choose
- Reload the registration page with an error message of your choosing

You can also provide a list of email addresses to be notified each time a registration is blocked.

Added for version 1.1.1: Time delay enforcer, maximum time option, time limits to cut down on email notifications, posting to a thread.

In the future, I'd like to add some simple logging and statistics, and a summary type of email notification (because people seem to quickly get tired of the single emails).

Note: I coded this myself from scratch, but I would like to acknowledge a couple of previous mods that used this same idea, by users Calorie and noppid, and maybe others. In any case, I believe this one adds some features that the others don't have.

Other advantages: no ads or links, no abuse of update notifications, no disappearing features, no threats to delete the mod (it will never be deleted, at least by me). Also, translations are allowed.

Installation:
----------------------------
1) If you have "Is Bot", "Stop the Registration Bots", "Spammers Suck!", or another mod that works on registration time, note any admincp settings for that mod then uninstall it.

2) Import the product XML file from the Product Manager.

3) Go to Settings > Options > Spambot Stopper Options and configure the desired settings.

4) IMPORTANT: try to register a new user to make sure that there are no problems with humans registering. If you want, you can also temporarily set the minimum time to a higher value (like 60 seconds) and test to see if the spammer rejection is working.



History:
----------------------------
1.1.1 (Feb 16, 2013)
  • Added timer for enforcing minimum time
  • Added maximum registration time limit
  • Added time limits for email notifications
  • Added posting notificatiosn to a thread

1.0.1 (Feb 01, 2013)
  • Fixed bug
  • Added check for fake timestamps

1.0 (Jan 31, 2013)
  • Initial Release

Download Now

File Type: zip product-kh99_spambot_stopper_1.1.1.zip (111.5 KB, 2335 views)

Screenshots

File Type: jpg sg1.jpg (118.3 KB, 0 views)

Show Your Support

  • This modification may not be copied, reproduced or published elsewhere without author's permission.

Comments
  #372  
Old 07-10-2014, 11:17 PM
infnity8x3 infnity8x3 is offline
 
Join Date: Apr 2009
Posts: 80
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Works as intended. Caught about 5 within the hour.

I use Captcha with this mod because I know the only thing Captcha slows down is people. Bots fly past it in seconds, literally.

Thanks for this
Reply With Quote
  #373  
Old 07-10-2014, 11:34 PM
Max Taxable's Avatar
Max Taxable Max Taxable is offline
 
Join Date: Feb 2011
Posts: 3,134
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Quote:
Originally Posted by infnity8x3 View Post
Works as intended. Caught about 5 within the hour.

I use Captcha with this mod because I know the only thing Captcha slows down is people.
Bots fly past it in seconds, literally.

Thanks for this
It also, annoys them. But that's for another thread.
Reply With Quote
  #374  
Old 07-11-2014, 12:04 AM
ozzy47's Avatar
ozzy47 ozzy47 is offline
 
Join Date: Jul 2009
Location: USA
Posts: 10,929
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

I would have to agree, captcha's are a thing of the past, and only annoy potential members. I don't use them, or questions and have no spam.
Reply With Quote
Благодарность от:
Max Taxable
  #375  
Old 08-01-2014, 07:18 PM
Chadi's Avatar
Chadi Chadi is offline
 
Join Date: May 2004
Location: USA
Posts: 2,043
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

I noticed that this conflicts in mobile skin. Even though my minimum seconds is set to 15, no matter how long I wait I still get the error "are you a spam bot" message, only in mobile registration process. Any fix?
Reply With Quote
  #376  
Old 08-01-2014, 07:24 PM
kh99 kh99 is offline
 
Join Date: Aug 2009
Location: Maine
Posts: 13,185
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Hmm...I'm afraid I don't know anything about the mobile stuff. Is it just a different style? Then I suppose the problem is that it's not inserting the right codes in the template. There's probably a way around that (like having an option to insert what's needed manually), but I haven't looked at this is a long time so I can't remember right now. I'll try to look at it soon (but I should warn you that I keep telling people that and I never manage to get any vb stuff done).
Reply With Quote
  #377  
Old 08-01-2014, 08:32 PM
kh99 kh99 is offline
 
Join Date: Aug 2009
Location: Maine
Posts: 13,185
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

OK, I got curious and looked at it a little. It works by adding the extra form values to the $timezoneoptions variable, so as long as you have that in your style it should be OK.

But I was only guessing that that was the problem, it could be something else.

Edit: OK, Chadi, I looked at your site and I see that the mobile style doesn't have the option to select the timezone, so I guess that's the problem. RIght now it doesn't look like there's any way to add it manually because I'd have to register the variables to your template. But I can add an option to do that (and maybe it will solve some other people's problems as well).
Reply With Quote
  #378  
Old 08-01-2014, 09:02 PM
Chadi's Avatar
Chadi Chadi is offline
 
Join Date: May 2004
Location: USA
Posts: 2,043
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Quote:
Originally Posted by kh99 View Post
OK, I got curious and looked at it a little. It works by adding the extra form values to the $timezoneoptions variable, so as long as you have that in your style it should be OK.

But I was only guessing that that was the problem, it could be something else.

Edit: OK, Chadi, I looked at your site and I see that the mobile style doesn't have the option to select the timezone, so I guess that's the problem. RIght now it doesn't look like there's any way to add it manually because I'd have to register the variables to your template. But I can add an option to do that (and maybe it will solve some other people's problems as well).
Please check again. It does (I restored original template). I only removed a few lines before to test it out to see if it would work. However, it doesn't even with that variable. So, what would I do from here to fix this?

Current mobile register template

Code:
{vb:stylevar htmldoctype}
<html xmlns="http://www.w3.org/1999/xhtml"<vb:if condition="$vboptions['enablefacebookconnect']"> xmlns:fb="http://www.facebook.com/2008/fbml"</vb:if> dir="{vb:stylevar textdirection}" lang="{vb:stylevar languagecode}" id="vbulletin_html">
<head>
    {vb:raw headinclude}
    <title>{vb:raw vboptions.bbtitle}</title>
    {vb:raw headinclude_bottom}
</head>
<body>

{vb:raw header}

{vb:raw navbar}

<div id="pagetitle" class="pagetitle ui-bar-b">
    <h1 class="pagetitle">{vb:rawphrase vbulletin_registration}</h1>
    <vb:if condition="$vboptions['usecoppa']"><p class="description">{vb:rawphrase step_2_of_2}</p></vb:if>
</div>

<vb:if condition="$vboptions['enablefacebookconnect']">
<form id="facebookassociateform" method="post" action="login.php?do=login" data-ajax="false">    
    <input type="hidden" name="do" value="login" />
    <input type="hidden" name="s" value="{vb:raw session.sessionhash}" />
    <input type="hidden" name="securitytoken" value="{vb:raw bbuserinfo.securitytoken}" />
    <input type="hidden" name="url" value="register.php" />
    <input type="hidden" id="vb_login_username" name="vb_login_username" />
    <input type="hidden" id="vb_login_password" name="vb_login_password" />
    <input type="hidden" name="cookieuser" id="cb_cookieuser" value="1" /> 
</form>
</vb:if>

<div data-role="content">
    <form id="registerform" action="register.php?do=addmember" name="register" method="post" class="vbform block" data-ajax="false">
        <h3>{vb:rawphrase register_at_x, {vb:raw vboptions.bbtitle}}</h3>
        
        <vb:if condition="$show['errors']">
            <h4 class="ui-bar ui-bar-e">{vb:rawphrase errors_occurred_during_registration}</h4>
            <div class="ui-body ui-body-e">
                <ul class="blockrow">
                    {vb:raw errorlist}
                </ul>
            </div>
        </vb:if>
    
        <vb:if condition="$show['coppa']">
            <p>{vb:rawphrase until_receive_signed_form}</p>
        </vb:if>
        
        <vb:if condition="$vboptions['enablefacebookconnect']">
            <h3 class="ui-bar ui-bar-d">{vb:rawphrase facebook_connect}</h3>
            <div id="fbregbox" class="fbregbox ui-br">
                <vb:if condition="$show['facebookuser']">
                    <img src="{vb:raw fbprofilepicurl}" title="{vb:var fbname}" alt="{vb:var fbname}" />
                    <a id="fb_reglogoutbtn" href="#"><img src="/images/mobile/facebook-mobile.png" alt="{vb:rawphrase logout_of_facebook}" width="244" /></a>
                    <br />
                    {vb:rawphrase welcome_x_link_y, {vb:var fbname}, {vb:raw fbprofileurl}}
                <vb:else />
                    <a id="fb_regloginbtn" href="#"><img src="/images/mobile/facebook-mobile.png" alt="{vb:rawphrase facebook_connect}" width="244" /></a>
                </vb:if>
            </div>
            
            <vb:if condition="$show['facebookuser']">
            <h4>{vb:rawphrase already_a_member}</h4>
            <p class="description">{vb:rawphrase associate_facebook_with_x_account, {vb:raw vboptions.bbtitle}}</p>
            <div data-role="fieldcontain">
                <label for="facebookusername">{vb:rawphrase username}:</label>
                <input type="text" class="textbox" name="facebookusername" id="facebookusername" maxlength="50" tabindex="1" value="" />
                <label for="facebookpassword">{vb:rawphrase password}:</label>
                <input type="password" class="textbox" name="facebookpassword" id="facebookpassword" maxlength="50" tabindex="1" />
                <input type="button" data-theme="a" name="facebookassociate" id="facebookassociate" value="{vb:rawphrase log_in}" tabindex="1" />
            </div>
            </vb:if>
            
            {vb:raw fbimportform}
        </vb:if>

        <h3 class="ui-bar ui-bar-d">{vb:rawphrase required_information}</h3>
        <div data-role="fieldcontain">
            <label for="regusername">{vb:rawphrase username}:</label>
            <input class="primary textbox" id="regusername" type="text" name="username" maxlength="{vb:raw vboptions.maxuserlength}" value="{vb:raw username}" tabindex="1" />
        </div>
            
        <div data-role="fieldcontain">
            <label for="password">{vb:rawphrase password}:</label>
            <input type="password" class="textbox" name="password" id="password" maxlength="50" value="{vb:raw password}" tabindex="1" />
            <label for="passwordconfirm">{vb:rawphrase confirm_password}:</label>
            <input type="password" class="textbox" name="passwordconfirm" id="passwordconfirm" maxlength="50" value="{vb:raw passwordconfirm}" tabindex="1" />
        </div>
        
        <div data-role="fieldcontain">
            <label for="email">{vb:rawphrase email_address}:</label>
            <input type="text" class="textbox" name="email" id="email" maxlength="50" value="{vb:raw email}" dir="ltr" tabindex="1" />
            <label for="emailconfirm">{vb:rawphrase confirm_email_address}:</label>
            <input type="text" class="textbox" name="emailconfirm" id="emailconfirm" maxlength="50" value="{vb:raw emailconfirm}" dir="ltr" tabindex="1" />
        </div>

        <vb:if condition="$show['coppa']">
        <div data-role="fieldcontain">
            <label for="parentemail">{vb:rawphrase parent_guardian_email}:</label>
            <input type="text" class="primary textbox" name="parentemail" id="parentemail" maxlength="50" value="{vb:raw parentemail}" dir="ltr" tabindex="1" />
        </div>
        </vb:if>
        
        {vb:raw human_verify}

        <vb:if condition="$show['customfields_profile']">
            <h3 class="ui-bar ui-bar-d">{vb:rawphrase additional_required_information_profile}</h3>
            {vb:raw customfields_profile}
            <vb:if condition="$show['birthday']">{vb:raw birthdayfields}</vb:if>
        </vb:if>

        <vb:if condition="$show['customfields_option']">
            <h3 class="ui-bar ui-bar-d">{vb:rawphrase additional_required_information_option}</h3>
            {vb:raw customfields_option}
        </vb:if>

        <h3 class="ui-bar ui-bar-d">{vb:rawphrase additional_information}</h3>
        <vb:if condition="$show['referrer']">
            <div data-role="fieldcontain">
                <label for="referrerfield_ctrl">{vb:rawphrase referrer}:</label>
                <input id="referrerfield_ctrl" type="text" class="primary textbox popupctrl" name="referrername" value="{vb:raw referrername}" tabindex="1" maxlength="{vb:raw vboptions.maxuserlength}" />
            </div>
        </vb:if>
        
        {vb:raw timezoneoptions}
        
        <div data-role="fieldcontain">
            <fieldset data-role="controlgroup">
            <legend>{vb:rawphrase receive_email}...</legend>
            <input type="checkbox" name="options[adminemail]" value="1" id="cb_adminemail" tabindex="1" {vb:raw checkedoff.adminemail} />
            <label for="cb_adminemail">{vb:rawphrase receive_email_from_bulletin_board_staff}</label>
            <vb:if condition="$show['email']">
                <input type="checkbox" name="options[showemail]" value="1" id="cb_showemail" tabindex="1" {vb:raw checkedoff.showemail} />
                <label for="cb_showemail">{vb:rawphrase receive_email_from_other_members}</label>
            </vb:if>
            </fieldset>
        </div>
        
        <vb:comment> For performance reason, (Too many form elements perform really bad on iOS), we disable additional information.
        
        {vb:raw customfields_other}
        
        </vb:comment>
        
        <div data-role="fieldcontain">
            <input type="checkbox" name="agree" id="cb_rules_agree" tabindex="1" value="1" /> 
            <label for="cb_rules_agree" class="full">{vb:rawphrase read_agree_abide_by_rules, {vb:raw vboptions.bbtitle}}</label>
            <a href="mobile.php?do=agreement" data-rel="dialog" data-transition="pop" data-role="button">{vb:rawphrase view_rules}</a>
        </div>
        
        <button type="submit" data-theme="a">{vb:rawphrase complete_registration}</button>

        <input type="hidden" name="s" value="{vb:raw session.sessionhash}" />
        <input type="hidden" name="securitytoken" value="{vb:raw bbuserinfo.securitytoken}" />
        <input type="hidden" name="do" value="addmember" />
        <input type="hidden" name="url" value="{vb:raw url}" />
        <input type="hidden" name="password_md5" />
        <input type="hidden" name="passwordconfirm_md5" />
        <vb:if condition="!$show['birthday']">
            <input type="hidden" name="day" value="{vb:raw day}" />
            <input type="hidden" name="month" value="{vb:raw month}" />
            <input type="hidden" name="year" value="{vb:raw year}" />
        </vb:if>
        <vb:if condition="$show['coppa']">
            <input type="hidden" name="coppauser" value="1" />
        </vb:if>
    </form>
</div>

{vb:raw footer}

</body>
</html>
Reply With Quote
  #379  
Old 08-01-2014, 09:08 PM
kh99 kh99 is offline
 
Join Date: Aug 2009
Location: Maine
Posts: 13,185
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

OK, well I'm glad you responded before I added that option. But now I'm at a loss. I guess I could try to add some logging so I can actually help people who have problems instead of telling them "I don't know".
Reply With Quote
  #380  
Old 08-02-2014, 11:59 AM
Shanakar Shanakar is offline
 
Join Date: Mar 2010
Posts: 8
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Installed on 4.2.2 PL1 Suite and it works perfectly! Thank you very much!
Reply With Quote
  #381  
Old 08-03-2014, 10:46 AM
markoroots markoroots is offline
 
Join Date: May 2013
Location: Italy
Posts: 275
Благодарил(а): 0 раз(а)
Поблагодарили: 0 раз(а) в 0 сообщениях
Default

Configuring inside the plugin also I can say that work perfectly on 4.2.2
Many thanks to the coder.
Very usefull.
I will mark immediately your mod.
Reply With Quote
Reply


Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump


All times are GMT. The time now is 01:54 AM.


Powered by vBulletin® Version 3.8.12 by vBS
Copyright ©2000 - 2024, vBulletin Solutions Inc.
X vBulletin 3.8.12 by vBS Debug Information
  • Page Generation 0.14049 seconds
  • Memory Usage 2,395KB
  • Queries Executed 26 (?)
More Information
Template Usage:
  • (1)SHOWTHREAD
  • (1)ad_footer_end
  • (1)ad_footer_start
  • (1)ad_header_end
  • (1)ad_header_logo
  • (1)ad_navbar_below
  • (1)ad_showthread_beforeqr
  • (1)bbcode_code
  • (2)bbcode_quote
  • (1)footer
  • (1)forumjump
  • (1)forumrules
  • (1)gobutton
  • (1)header
  • (1)headinclude
  • (1)modsystem_post
  • (1)navbar
  • (4)navbar_link
  • (120)option
  • (1)pagenav
  • (1)pagenav_curpage
  • (4)pagenav_pagelink
  • (2)pagenav_pagelinkrel
  • (11)post_thanks_box
  • (16)post_thanks_box_bit
  • (11)post_thanks_button
  • (1)post_thanks_javascript
  • (1)post_thanks_navbar_search
  • (2)post_thanks_postbit
  • (11)post_thanks_postbit_info
  • (10)postbit
  • (2)postbit_attachment
  • (11)postbit_onlinestatus
  • (11)postbit_wrapper
  • (1)spacer_close
  • (1)spacer_open
  • (1)tagbit_wrapper 

Phrase Groups Available:
  • global
  • inlinemod
  • postbit
  • posting
  • reputationlevel
  • showthread
Included Files:
  • ./showthread.php
  • ./global.php
  • ./includes/init.php
  • ./includes/class_core.php
  • ./includes/config.php
  • ./includes/functions.php
  • ./includes/class_hook.php
  • ./includes/modsystem_functions.php
  • ./includes/functions_bigthree.php
  • ./includes/class_postbit.php
  • ./includes/class_bbcode.php
  • ./includes/functions_reputation.php
  • ./includes/functions_post_thanks.php 

Hooks Called:
  • init_startup
  • init_startup_session_setup_start
  • init_startup_session_setup_complete
  • cache_permissions
  • fetch_threadinfo_query
  • fetch_threadinfo
  • fetch_foruminfo
  • style_fetch
  • cache_templates
  • global_start
  • parse_templates
  • global_setup_complete
  • showthread_start
  • showthread_getinfo
  • forumjump
  • showthread_post_start
  • showthread_query_postids
  • showthread_query
  • bbcode_fetch_tags
  • bbcode_create
  • showthread_postbit_create
  • postbit_factory
  • postbit_display_start
  • post_thanks_function_post_thanks_off_start
  • post_thanks_function_post_thanks_off_end
  • post_thanks_function_fetch_thanks_start
  • fetch_musername
  • post_thanks_function_fetch_thanks_end
  • post_thanks_function_thanked_already_start
  • post_thanks_function_thanked_already_end
  • post_thanks_function_fetch_thanks_bit_start
  • post_thanks_function_show_thanks_date_start
  • post_thanks_function_show_thanks_date_end
  • post_thanks_function_fetch_thanks_bit_end
  • post_thanks_function_fetch_post_thanks_template_start
  • post_thanks_function_fetch_post_thanks_template_end
  • postbit_imicons
  • bbcode_parse_start
  • bbcode_parse_complete_precache
  • bbcode_parse_complete
  • postbit_attachment
  • postbit_display_complete
  • post_thanks_function_can_thank_this_post_start
  • pagenav_page
  • pagenav_complete
  • tag_fetchbit_complete
  • forumrules
  • navbits
  • navbits_complete
  • showthread_complete