Thread Problem mit Script (10 answers)
Opened by roest at 2009-08-24 22:53

Gast roest
 2009-08-24 22:53
#124703 #124703
Hallo Zusammen.
Ich habe von einer Website ein Script heruntergeladen welches Automatisch auf Pinnwände von Spickmich spammt.
Nur leider ist es etwas verbuggt.

Es Spammt immer zuerst bei allen meinen Freunden die Online sind -->doof
Es Spammt immer zweimal (auf der Pinnwand kommt es nur an weil man so schnell hintereinander keinen Eintrag machen kann.
Das mit dem bei xyz wurden schon auf die Pinnwand getextet funktioniert nicht.

Mal nach 20 und mal nach 100 Einträgen kommt die Error meldung:
There is no form nubered 2 at [pfad]/pinnwandspam.pl line 120
There is no form nubered 2 at C://Perl//site/lib/WWW/Mechanize.pm line 1830
Ich vermute mal stark er findet das Formular welches er ausfüllen soll nichtmehr weil er keinen User selectiert hat.
Naja das ist doof weil manchmal nimmter er nur die 20 User von der Startseite aus der "Wer ist gerade online" und manchmal das Ziel was ich glaube ausgewählt zu haben.
Ich glaube weiterhin ich kann mit dieser funktion beeinflussen wohin er spammen soll, klappen tut das aber nur manchmal:
Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
sub UsersFromMainpage{
        my @users;
 
        $agent->get("http://www.spickmich.de/club/dce946a1b98e? #hier denke ich 
showMembers&p=3");
 
        foreach($agent->links()){               
                $_->url() =~ /\/profil\/([^\?\/]*)/;    # Benutzernamen aus der Profil-URL holen
                push(@users, $1) if(defined $1);        # und an @users anhängen
                }
 
        return(@users);
        }


Nungut ich Poste einfach mal den Kompletten Code in der Hoffnung das jemand villeicht ein paar Fehler findet.
Es sein noch gesagt das ich selber kein Perl kann mich aber ausgiebig mit php, sql etc beschäftigt habe und desshalb ein bisschen was verstehe.

Ich danke für die Hilfe

mfg roest
Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
#!/usr/bin/perl
 
use strict;
 
use WWW::Mechanize;
use WWW::Mechanize::Link;
 
# Konfiguration
my $usermail    = "MEINE EMAIL";                # E-Mail-Adresse, die zum LogIn verwendet wird
my $password    = "MEIN PASSWORT";                      # Passwort
my $message     = "SPAMMTEXT";                  # Text, der Auf die Pinnwände geschrieben wird
my $username    = "MEIN NICKNAME";                      # Dein Profilname
my $entries     = 200;                          # Anzahl der zu verschickenden Einträge
 
# Weitere Globale Variablen
my @queue;
my $written = 0;
my @done;
 
my $agent = WWW::Mechanize->new();
$agent->agent_alias('Windows Mozilla'); # Durch 'Windows IE 6' oder 'Windows Mozilla' ersetzen
$agent->get("http://www.spickmich.de/club/dce946a1b98e?showMembers&p=3");
 
# Einloggen
$agent->submit_form(
        form_number => 1,
        fields      => {
                usermail => $usermail,
                userpwd  => $password,
        });

@queue = UsersFromMainpage();
 
while($written < $entries){
        while($#queue > 0 && $written < $entries){
                my $curuser = shift(@queue);
 
                if(MessageWrite($curuser) == 0){
                        print("Bei ".$curuser." besteht schon ein Eintrag\n");
 
                        push(@done, $curuser);
                        }
                else {
                        print("Nr. ".$written." Auf Pinnwand von ".$curuser." geschrieben\n");
 
                        push(@done, $curuser);
                        $written++;
                        }
                }
 
        @queue = UsersViaFriends(pop(@done));
        }
 
# Ausloggen
$agent->submit_form(
        form_number => 1,
        fields      => {
                action => 'logout',
        });

sub UsersFromMainpage{
        my @users;
 
        $agent->get("http://www.spickmich.de/club/dce946a1b98e?showMembers&p=3");
 
        foreach($agent->links()){               
                $_->url() =~ /\/profil\/([^\?\/]*)/;    # Benutzernamen aus der Profil-URL holen
                push(@users, $1) if(defined $1);        # und an @users anhängen
                }
 
        return(@users);
        }
 
sub UsersViaFriends {
        my $user = shift;
        my @users;
        my $pre;
 
        $agent->get("http://spickmich.de/profil/".$user);
 
        $agent->find_link(url_regex=>qr/\/nachrichten\//)->url() =~ /\/nachrichten\/(.*)/;      # User-ID herausfinden
 
        $agent->get("http://spickmich.de/profil/".$1);
 
        foreach($agent->links()){               
                $_->url() =~ /\/profil\/([^\?\/]*)/;                    # Benutzernamen aus der Profil-URL holen
                push(@users, $1) if(defined $1 && !($1 eq $pre));       # und an @users anhängen
 
                $pre = $1;
                }
 
        return(@users);
        }
 
sub MessageWrite {
        my $user = shift;
 
        $agent->get('http://spickmich.de/profil/'.$user);
 
        if($agent->content() =~ /Pinnwand.+\/profil\/$username/){
                return 0;
                }
        else {
                # Auf Pinnwand schreiben
                $agent->submit_form(
                        form_number => 2,
                        fields      => {
                                wallPostText => $message,
                                });
 
                return 1;
                }
        }

Last edited: 2009-08-25 08:18:40 +0200 (CEST)

View full thread Problem mit Script