Spambots sind zum Glück nicht sehr schlau, und in vielen Fällen sind sie noch beschränkter als Webbrowser: Während Browser aus unleserlichem Kauderwelsch verständliche Email-Adressen zaubern, resignieren manche Spambots vor Ungetümen wie spamyour& #115;elf@filt hyspamme r.com.
Das folgende Skript generiert solche Strings. Eine verwendbare Version findet sich hier.
#!/usr/bin/perl -wT use CGI; use strict; my $q = new CGI; print $q->header(-type=>'text/html', -charset=>'utf-8'), $q->start_html("Email-Encoder"), $q->h1('Email-Encoder'), $q->start_form, "Bitte geben Sie eine Email-Adresse ein.", $q->p, $q->textfield(-name=>'input'), $q->p, $q->submit, $q->p; if ($q->param) { print '<textarea rows="5" cols="50">'; map{printf"&#%s;", ord} split//, $q->param('input'); print "</textarea>"; } print $q->endform, $q->end_html;
Leider steht zu erwarten, dass auch Spambots klüger werden, daher würde ich nicht zu sehr auf die Magie des Skripts vertrauen. Das Skript wurde übrigens als CLI-Version schon zum Perl One-Liner of the Month gewählt:
perl -we'map{printf"%s;", ord} split //, pop' spamyourself@filthyspammer.com
Da ich ja mittlerweile ein großer Schlangenfreund bin:
python -c "import sys; print ''.join(map(lambda x: ''+str(ord(x))+';', list(sys.argv[1])))" spamyourself@filthyspammer.com
Ehrlicherweise muss man zugeben, dass Python hier durch den Import eines Moduls und den Variablennamen sys.argv[1]
nicht so elegant ist wie die Perl-Version. Außerdem benötigt Python mehr als dreimal so viel Zeit (0,018s vs. 0,004s).