Herzlich willkommen im Archiv vom ABAKUS Online Marketing Forum
Du befindest Dich im Archiv vom ABAKUS Online Marketing Forum. Hier kannst Du Dich für das Forum mit den aktuellen Beiträgen registrieren.
Wie geht denn das???Kristian hat geschrieben:... ich würde mich daraufhin mit dem Einsperren des Bots bedanken, sagen wir mal für 10 Minuten.
Hast Dir ja 'nen schönen Job ausgesucht. Aber gut, in Zeiten von Harz IV.Kristian hat geschrieben:... dass die Executive, der Teergrubenbetreiber, sprich ich ...
rechtlegal hat geschrieben:Wie geht denn das???Kristian hat geschrieben:... ich würde mich daraufhin mit dem Einsperren des Bots bedanken, sagen wir mal für 10 Minuten.![]()
so pimaldaume
for 1 to 600
{
sleep(1); // eine secunde warten
echo("Hallo!");
}
da würde man jetzt verteilt auf 10 Minuten = 600 secunden
600 mal "Hallo" senden
fals der Server nicht abbricht
Aber im Zeitalter von Multitasking, bremmst man den Bot damit nicht wirklich
wärend man nicht sendet, verbraucht er keine Rechenzeit,
also haben seine BotKollegen mehr Rechenzeit und können mehr spidern
alternativ könnte man Datenmüll senden um ihn zu beschäftigen, was aber den eigenen Traffic natürlich erhöt ..... und das will man vielleicht nicht
Rein theoretisch könnte man es so machen:hard_pollux hat geschrieben: Leider bin ich aber nicht "der Networker" um den gesamten technischen Ablauf zu verstehen. Vielleicht kannst Du mir da via PN etwas unter die "Arme" greifen. Hätte da auch Interesse am Code, auch via Email.
Code: Alles auswählen
#!/usr/bin/perl
$|++;
use strict;
use warnings;
use diagnostics;
use CGI::Carp qw(fatalsToBrowser);
use CGI;
use Fcntl qw(:flock);
use File::Spec;
my $max_bots = 10; # maximale Anzahl der eingesperrten Bots
my $max_time = 600; # Einsperren fuer X Sekunden
my $next_grube = ''; # naechste Grube wenn die eigene voll ist
# z.B. 'http://www.teergrubing.de/cgi-bin/teergrubing.cgi?domain='
my $shrink_time = 'on'; # on / off reduziert die $max_time bei steigender Bot-Zahl
my $log_file = File::Spec->catfile($ENV{'DOCUMENT_ROOT'},'teergrube','log.txt'); # Log-File
my $counter = File::Spec->catfile($ENV{'DOCUMENT_ROOT'},'teergrube','count.txt'); # Counter fuer Insassen
my($bot_count,$sleep_count);
sub _log_it($);
sub _count_bot($);
my $emacs_need_this = {};
$SIG{'USR1'} = \&sig_handler();
$SIG{'TERM'} = \&sig_handler();
$SIG{'PIPE'} = 'IGNORE';
my $query = new CGI;
my $domain = $query->param('domain');
_log_it("Catched BadBot $ENV{'REMOTE_ADDR'} / $ENV{'HTTP_USER_AGENT'} from $domain at " . scalar(localtime()) . "\n");
$bot_count = _count_bot(1);
if($shrink_time eq 'on'){
$max_time -= (($max_time / $max_bots) * ($bot_count - 1));
}
if($bot_count <= $max_bots){
print $query->header();
print $query->start_html(-title => 'Teergrube');
$sleep_count = 0;
while($sleep_count < $max_time){
last unless(print " \n");
sleep 1;
$sleep_count++;
}
print $query->end_html();
}else{
if(length($next_grube)){
print $query->redirect('-url' => $next_grube . $domain);
}else{
print $query->redirect('-url' => 'http://' . $ENV{'REMOTE_ADDR'});
}
}
END{
$bot_count = _count_bot(-1);
_log_it("Lost BadBot $ENV{'REMOTE_ADDR'} / $ENV{'HTTP_USER_AGENT'} from $domain at " . scalar(localtime()) . "\n");
}
sub _log_it($){
my $text = shift;
open(LOG, ">> $log_file") or die("open(LOG, >> $log_file) failed $!");
flock(LOG, LOCK_EX);
print LOG $text;
close(LOG) or die("close(LOG) failed $!");
return;
}
sub _count_bot($){
my $value = shift;
open(CNT, "+>> $counter") or die("open(CNT, >> $counter) failed $!");
flock(CNT, LOCK_EX);
seek(CNT,0,0);
my $is_count = <CNT> || 0;
$is_count += $value;
chomp($is_count);
seek(CNT,0,0);
truncate(CNT,0);
print CNT $is_count . "\n";
close(CNT) or die("close(CNT) failed $!");
return $is_count;
}
sub sig_handler(){
return unless(defined $bot_count);
warn 'SIGNAL received at ' . scalar(localtime);
$bot_count = _count_bot(-1);
_log_it("Lost BadBot from $ENV{'REMOTE_ADDR'} at " . scalar(localtime()) . "\n");
exit();
}
__END__
Code: Alles auswählen
$next_grube = '';
Code: Alles auswählen
$next_grube = 'http://www.teergrubing.de/';
Code: Alles auswählen
RewriteRule ^.* - [F]
Code: Alles auswählen
RewriteRule ^.* /cgi-bin/scriptname.cgi?domain=diese.domain.de [L]
Code: Alles auswählen
RewriteRule ^.* http://www.teergrubing.de/www.domain.de/ [R,L]
Die Idee ist interessant. ME. bringt das aber nur etwas, wenn die Breite der User so was macht, andernfalls ringt das dem Bot noch nicht mal ein müdes Lächeln an. Und außerdem kann der Bot das Ganze bei entsprechend intelligenter Programmierung problemlos unterlaufen bzw. vermeiden.Kristian hat geschrieben:Hallo
Sagen wir mal rein theoretisch ich würde die Idee der Teergrube (googlen / Danke Lutz) aufgreifen wollen.
Code: Alles auswählen
$next_grube = ''; # naechste Grube wenn die eigene voll ist
Leicht OT? Uneingeschränkte Zustimmung!Kristian hat geschrieben:Hallo
Vorweg, wir sind jetzt leicht OT in diesem Forum. Ev. mag das einer der Mods verschieben?