Darmstadt.pm | Mailingliste | Treffen, Veranstaltungen | Leute | Links | FAQ | ... Hilfe | Änderungen | Einstellung: | Impressum | | Seite verändern |
Gerade bei German.pm kommt sehr viel Spam an. Da mich es ziemlich genervt hat, diesen Spam immer von Hand zu löschen, habe ich ein Skript geschrieben, dass auf der Änderungsseite nachschaut, ob Seiten geschrieben wurden, die "verdächtig" sind. Die Seiten, die von den Spammern erstellt werden, beginnen (fast) immer mit 'http'.
Mit diesem Skript kann ich ganz einfach die Seite löschen:
#!/usr/bin/perl use strict; use warnings; use LWP::Simple; use HTML::Parser; my $url = 'http://www.perlmongers.de/?'; my $parser = HTML::Parser->new(text_h => [\&text_handler,"self,dtext"]); my $choice = 0; my @pages; list_files(); while($choice >= 0){ print "> "; chomp($choice = <STDIN>); last if $choice =~ m/^n/ or $choice eq 'exit'; if($choice eq 'all'){ delete_page(@pages); $choice = 0; } elsif($choice eq 'ls'){ list_files(); $choice = 0; } elsif($choice =~ /\D/){ print "Your choice was not valid\n"; $choice = 0; } elsif(defined $pages[$choice-1]){ delete_page($pages[$choice-1]); } } #----------------------------------------------------------------------------# # Subroutine # #----------------------------------------------------------------------------# sub list_files{ @pages = (); my $changes = $url . 'Änderungen'; my $content = get($changes); $parser->{changes} = 0; $parser->parse($content); my $counter = 1; print "What page should be deleted:\n"; print $counter++," ",$_,"\n" for @pages; } sub text_handler{ my ($self,$dtext) = @_; return unless defined $dtext; if($dtext eq 'Änderungen'){ $self->{changes} = 1; } if($self->{changes} == 1 and $dtext =~ /^http:/){ push @pages,$dtext; } } sub delete_page{ my (@pages) = @_; my $url = 'http://www.perlmongers.de/?'; my $params = 'action=edit&button=Speichern&wiki_text=&page_id='; for(@pages){ get($url . $params . $_); print $_," deleted\n"; } }