The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
#!/usr/bin/perl
use strict;
use warnings;
use HTTP::Proxy::Builder;
use HTTP::Proxy::BodyFilter::tags;
use HTTP::Proxy::BodyFilter::htmltext;

my %leet = (
    a => [qw( 4 /-\ @ )],
    b => ['|3'],
    c => [qw! c ( < [ !],
    e => [qw( e 3 )],
    g => [qw( g 6 )],
    h => [qw! h |-| )-( !],
    k => [qw( k |< ]{ )],
    i => [ 'i', '!' ],
    l => [ 'l', "1", "|" ],
    m => [ 'm', "|V|", "|\\/|" ],
    n => ["|\\|"],
    o   => [ 'o', "0" ],
    s   => [ "5", "Z" ],
    t   => [ "7", "+" ],
    u   => [qw( u \_/ )],
    v   => [qw( v \/ )],
    w   => [qw( vv `// )],
    'y' => [ 'j', '`/' ],
    z   => ["2"],
);

our $proxy;
$proxy->push_filter(
    mime     => 'text/html',
    response => HTTP::Proxy::BodyFilter::tags->new,
    response => HTTP::Proxy::BodyFilter::htmltext->new(
        sub {
            s/([a-zA-Z])/$leet{lc $1}[rand @{$leet{lc $1}}]||$1/ge;
        }
    )
);