Kom ihåg mig?
Home Menu

Menu


Stoppa spam på forum och bloggar

 
Ämnesverktyg Visningsalternativ
Oläst 2011-10-06, 15:02 #1
klein klein är inte uppkopplad
Klarade millennium-buggen
 
Reg.datum: Jul 2005
Inlägg: 2 225
klein klein är inte uppkopplad
Klarade millennium-buggen
 
Reg.datum: Jul 2005
Inlägg: 2 225
Shield Stoppa spam på forum och bloggar

Botnar som används för Black hat SEO är numera plåga som inte ungår någon forum eller blogg ägare, efter en slump sprungit på mjukvara som används för black hat SEO , så hittade jag url: http://www.stopforumspam.com/

Här är mitt bidrag till ett bättre internet, jag är hobby programmerare, därav får ni ta koden för vad den här. Jag har shell access på min burk, därav så kan förfarande som beskriv nedan vara lite annorlunda för webhotell som saknar shellaccess.

Instruktioner nedan fungera för mac och linux användare, för Windows RTFM eller ladda hem Vbox , kör ingång virtuell maskin med linux.

Värt att notera den första scriptet körs via enklast php_cli och det kommer troligen göra time out man kör det på webhotelll miljö via http. IP Ban filen innehåller ca 180k rader ip adresser,.

Notera 2 : fopen ,kommer skapa filer i /tmp/ , kommer antaligen inte vara så populärt hos Ert webhotell, så byt /tmp till getcwd(). i det fopen avsnitt som finns nedan.

När ni ser att scriptet fungera, så kommentara bort logg delen av koden.

Kod 2 , förutsätter att man har loggat in på DBn redan. Hur gör? Se första raderna kod 1 fram till // Slut på DB login

Och ni får jättegärna bidra med smartare kod och förbättringar.... Jag har inte märkt av någon prestanda problem. Men det kan bli ett problem i webhotell miljöer.


Instruktioner :

1) Ladda hem databasen från http://www.stopforumspam.com/downloads/

Med blockerade IP addresser.

Packa upp filen och dra upp ett bash skriv
Kod:
cat filnamn | tr -t , '\n' > evil_ip.txt
2) Logga in på mysql , skapa tabell i databasen med följande struktur :

Kod:
CREATE TABLE `banIP` (
  `ban_id` int(11) NOT NULL AUTO_INCREMENT,
  `ban_ip` varchar(16) COLLATE utf8_bin NOT NULL DEFAULT '',
  `ban_time` int(11) NOT NULL DEFAULT '0',
  PRIMARY KEY (`ban_id`),
  KEY `ban_id` (`ban_id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_bin;
/*!40101 SET character_set_client = @saved_cs_client */;
3) Kod 1 inläsning av data :

Kod:
<?
error_reporting(E_ALL & ~E_NOTICE & ~E_DEPRECATED);
define( DB_SERVER, "127.0.0.1");
define( DB_SERVER_USERNAME, "dittusername");
define( DB_SERVER_PASSWORD, "dittpassword");
define( DB_DATABASE, "dindatabas");
define("OUTPUT_CHARSET","ISO-8859-1");


$link = mysql_connect( DB_SERVER, DB_SERVER_USERNAME, DB_SERVER_PASSWORD);
$link = mysql_select_db( DB_DATABASE );

// Slut på DB login

$ipfile ="/tmp/evil_ip.txt";
$handle 		= @fopen( $ipfile, "r");

if ($handle) {	
	$X=0;
	while (!feof($handle)) {
            
            $data              = fgets($handle, 32768 );
            $INLINE2           = str_replace( "\n","", $data); 
            
            
            $SQL0   = "SELECT * FROM banIP WHERE ban_ip='".$INLINE2."';";
            $res0   =  mysql_query ( $SQL0 ); 
            
            if ( mysql_num_rows($res0) == 0  ) {
                                  
                    $tid               = time();            
                    $SQL               = "INSERT banIP ( ban_ip , ban_time ) VALUES ( '$INLINE2', '$tid' );";
                    $res               =   mysql_query ( $SQL );
            
                    print "\n".$SQL."  res=".$res;
            
            }            
            
        }            
        }

?>
4) Kod 2 , den här koden skall implemteras central någonstans på din blogg eller forum :

Kod:
<?
function CheckEvilIP ( $IP ) {    
    
            $URL    = "http://127.0.0.1/";      
            $SQL0   = "SELECT * FROM banIP WHERE ban_ip='".$IP."';";
            $res0   =  mysql_query ( $SQL0 ); 
            
            if ( mysql_num_rows($res0) > 0  ) {          // Finns ondskan i databasen?                  
                $handle = fopen("/tmp/evil-ip-address.txt", "a");
                    fwrite($handle,"\n". $_SERVER['REMOTE_ADDR'] ); 
                fclose( $handle );
                
                header ('HTTP/1.1 301 Moved Permanently');
                header ('Location: '.$URL);                
                
            } else if ( mysql_num_rows($res0) ==0  ) {              // Det finns ingen ondska.    
                
                $urlchecker = file_get_contents('http://www.stopforumspam.com/api?ip='.$IP);
                
                 if (strpos($urlchecker, 'yes') ) {    
                    $handle = fopen("/tmp/evil-new-ip-address.txt", "a");
                        fwrite($handle,"\n". $_SERVER['REMOTE_ADDR'] ); 
                    fclose( $handle );    
                    
                    $tid               = time();            
                    $SQL               = "INSERT banIP ( ban_ip , ban_time ) VALUES ( '$IP', '$tid' );";
                    $res               =  mysql_query ( $SQL );
                    
                    header ('HTTP/1.1 301 Moved Permanently');
                    header ('Location: '.$URL);

        }
                
    }
            
}
?>

Slutligen :

Anropa funktionen med :

Kod:
CheckEvilIP ( $_SERVER['REMOTE_ADDR'] );

Senast redigerad av klein den 2011-10-06 klockan 15:21
klein är inte uppkopplad   Svara med citatSvara med citat
 


Aktiva användare som för närvarande tittar på det här ämnet: 2 (0 medlemmar och 2 gäster)
 

Regler för att posta
Du får inte posta nya ämnen
Du får inte posta svar
Du får inte posta bifogade filer
Du får inte redigera dina inlägg

BB-kod är
Smilies är
[IMG]-kod är
HTML-kod är av

Forumhopp


Alla tider är GMT +2. Klockan är nu 14:01.

Programvara från: vBulletin® Version 3.8.2
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Svensk översättning av: Anders Pettersson
 
Copyright © 2017