#!/usr/bin/perl -w

# A HTTP Proxy for thomann.de price information
###############################################################################
#
# Rational: About a year ago thomann.de decided to change its website
# and encode all price information in images.  This is of course
# extremely problematic for low-vision or blind users.
# In a personal mail they explained to me they do it to prevent
# automated price comparison, and they claimed their technique is
# safe against automatic bots.  Well...
# If a *BLIND* person can come up with the script below on their own,
# I bet my ass off that anyone with an interest in
# automated information retrieval would be able to do the same.
# Seems like the management of thomann.de was fooled very much
# by their webmaster.
# And they shouldn't do what they are doing anyway.
# So I made this script public for anyone who needs it.
# Its in the public domain.  Use, change, distribute as you wish.
#
# Usage:
# You need Perl, the HTTP::Proxy module (libhttp-proxy-perl on Debian) and
# perlmagick.
# Then just run this script if you want to visit thomann.de.
# Configure your web browser of choice to use the Proxy
# (its at localhost:3128) and just visit http://thomann.de
# If the proxy finds a digit image it retrieves it and compares it to
# the very simplistic database below.
#
# FUTURE PLANS: Rescale all images to a common size and use some form of
# fuzzy compare (FANN?) to avoid having to save all bitmap variations
# in the source and also make this a bit more generic (ONR).
#
# DISCLAIMER: While I have done my best to guess the numbers right,
# I do not guarantee this is error-free.  Dont trust the price
# you're reading.  In any case, you shouldn't buy from thomann.de
# anyways since they obviously dont want you to use their service.
#
# Notes: This is a work in progress, not all digits are defined yet.
###############################################################################
use strict;
use HTTP::Proxy;
use HTTP::Proxy::BodyFilter::htmlparser;
use HTTP::Proxy::HeaderFilter::simple;
use HTML::Parser;
use LWP::UserAgent;
use Image::Magick;

my %chars = ("
XXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXX
XXXXXX          XXXXX
XXXX              XXX
XXX                XX
XXX                 X
XX                  X
XX         X        X
XX        XX        X
XX        XX        X
XX        XX        X
XX        XX        X
XX        XX        X
XX        XX        X
XX        XX        X
XX        XX        X
XX        XX        X
XX        XX        X
XX        XX        X
XX        XX        X
XX        XX        X
XX        XX        X
XX        XX        X
XX        XX        X
XX        XX        X
XX        XX        X
XX        XX        X
XX        XX        X
XX                  X
XX                  X
XXX                XX
XXX                XX
XXXXX             XXX
XXXXXXX        XXXXXX
XXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXX
" => 0, "
XXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXX
XXXXX          XXXXXX
XXX              XXXX
XX                XXX
XX                 XX
X                  XX
X         X        XX
X        XX        XX
X        XX        XX
X        XX        XX
X        XX        XX
X        X        XXX
X        X        XXX
XXXXXXXXX         XXX
XXXXXXXXX        XXXX
XXXXXXXX         XXXX
XXXXXXX         XXXXX
XXXXXX         XXXXXX
XXXXX          XXXXXX
XXXX          XXXXXXX
XXXX         XXXXXXXX
XXX         XXXXXXXXX
XX          XXXXXXXXX
XX         XXXXXXXXXX
X         XXXXXXXXXXX
X         XXXXXXXXXXX
X        XXXXXXXXXXXX
X                  XX
X                  XX
X                  XX
X                  XX
X                  XX
XXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXX
" => 2, "
XXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXX
X                   X
X                   X
X                   X
X                   X
X                   X
X                   X
XXXXXXXXXXX        XX
XXXXXXXXXXX        XX
XXXXXXXXXX         XX
XXXXXXXXXX        XXX
XXXXXXXXXX        XXX
XXXXXXXXX         XXX
XXXXXXXXX        XXXX
XXXXXXXXX        XXXX
XXXXXXXX         XXXX
XXXXXXXX        XXXXX
XXXXXXXX        XXXXX
XXXXXXX         XXXXX
XXXXXXX        XXXXXX
XXXXXXX        XXXXXX
XXXXXX         XXXXXX
XXXXXX        XXXXXXX
XXXXXX        XXXXXXX
XXXXX         XXXXXXX
XXXXX        XXXXXXXX
XXXX         XXXXXXXX
XXXX         XXXXXXXX
XXXX        XXXXXXXXX
XXX         XXXXXXXXX
XXX         XXXXXXXXX
XXX        XXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXX
" => 7, "
XXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXX
XXXXX          XXXXXX
XXX              XXXX
XX                XXX
XX                 XX
X                  XX
X         X        XX
X        XX        XX
X        XX        XX
X        XX        XX
X        XX        XX
X        XX        XX
X        XX        XX
XX                XXX
XX                XXX
XXX              XXXX
XXX              XXXX
XX                XXX
XX                XXX
XX       XX        XX
X        XX        XX
X        XX        XX
X        XX        XX
X        XX        XX
X        XX        XX
X        XX        XX
X        XX        XX
X                  XX
X                  XX
XX                XXX
XX                XXX
XXXX             XXXX
XXXXXX        XXXXXXX
XXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXX
" => 8, "
XXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXX
XXXXX          XXXXX
XXX              XXX
XX                XX
XX                 X
X                  X
X         X        X
X        XX        X
X        XX        X
X        XX        X
X        XX        X
X        XX        X
X        XX        X
X        XXXXXXXXXXX
X                XXX
X                 XX
X                 XX
X                  X
X                  X
X                  X
X        XX        X
X        XX        X
X        XX        X
X        XX        X
X        XX        X
X        XX        X
X        XX        X
X                  X
X                  X
XX                XX
XX                XX
XXXX             XXX
XXXXXX        XXXXXX
XXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXX
" => 6, "
XXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXX
XXXXXX         XXXXX
XXXX             XXX
XXX               XX
XX                 X
XX                 X
XX        X        X
XX       XX        X
XX       XX        X
XX       XX        X
XX       XX        X
XX       XX        X
XX       XX        X
XX        X        X
XX                 X
XX                 X
XX                 X
XX                 X
XXX                X
XXXX               X
XXXXXXXXXXX        X
XX       XX        X
XX       XX        X
XX       XX        X
XX       XX        X
XX       XX        X
XX       XX        X
XX        X        X
XX                 X
XX                 X
XXX               XX
XXXX             XXX
XXXXXXX       XXXXXX
XXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXX
" => 9, "
XXXXXXXXXXXXXXX
XXXXXXXXXXXXXXX
XXXXXXX      XX
XXXXXXX      XX
XXXXXX       XX
XXXX         XX
XX           XX
XX           XX
XX           XX
XX           XX
XXXXXX       XX
XXXXXX       XX
XXXXXX       XX
XXXXXX       XX
XXXXXX       XX
XXXXXX       XX
XXXXXX       XX
XXXXXX       XX
XXXXXX       XX
XXXXXX       XX
XXXXXX       XX
XXXXXX       XX
XXXXXX       XX
XXXXXX       XX
XXXXXX       XX
XXXXXX       XX
XXXXXX       XX
XXXXXX       XX
XXXXXX       XX
XXXXXX       XX
XXXXXX       XX
XXXXXX       XX
XXXXXX       XX
XXXXXXXXXXXXXXX
XXXXXXXXXXXXXXX
XXXXXXXXXXXXXXX
XXXXXXXXXXXXXXX
XXXXXXXXXXXXXXX
XXXXXXXXXXXXXXX
XXXXXXXXXXXXXXX
XXXXXXXXXXXXXXX
" => 1, "
XXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXX
XXXXX          XXXXXX
XXX              XXXX
XX                XXX
XX                 XX
X                  XX
X         X        XX
X        XX        XX
X        XX        XX
X        XX        XX
X        XX        XX
X        XX        XX
X        XX        XX
XXXXXXXXXX        XXX
XXXXXX            XXX
XXXXXX           XXXX
XXXXXX          XXXXX
XXXXXX            XXX
XXXXXX            XXX
XXXXXXXXXXX        XX
X        XX        XX
X        XX        XX
X        XX        XX
X        XX        XX
X        XX        XX
X        XX        XX
X        XX        XX
X                  XX
X                  XX
XX                XXX
XX                XXX
XXXX             XXXX
XXXXXX        XXXXXXX
XXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXX
" => 3, "
XXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXX          XXXX
XXXXXXXXX          XXXX
XXXXXXXX           XXXX
XXXXXXXX           XXXX
XXXXXXX            XXXX
XXXXXXX            XXXX
XXXXXXX            XXXX
XXXXXX             XXXX
XXXXXX             XXXX
XXXXXX     X       XXXX
XXXXX      X       XXXX
XXXXX      X       XXXX
XXXXX      X       XXXX
XXXX      XX       XXXX
XXXX      XX       XXXX
XXXX      XX       XXXX
XXX      XXX       XXXX
XXX      XXX       XXXX
XXX      XXX       XXXX
XX                    X
XX                    X
XX                    X
XX                    X
XX                    X
XXXXXXXXXXXX       XXXX
XXXXXXXXXXXX       XXXX
XXXXXXXXXXXX       XXXX
XXXXXXXXXXXX       XXXX
XXXXXXXXXXXX       XXXX
XXXXXXXXXXXX       XXXX
XXXXXXXXXXXX       XXXX
XXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXX
" => 4, "
XXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXX
XX                 X
XX                 X
XX                 X
XX                 X
XX                 X
XX                 X
XX       XXXXXXXXXXX
XX       XXXXXXXXXXX
XX       XXXXXXXXXXX
XX       X      XXXX
XX                XX
XX                 X
XX                 X
XX                 X
XX                 X
XX        X        X
XXXXXXXXXXX        X
XXXXXXXXXXX        X
XXXXXXXXXXX        X
XX       XX        X
XX       XX        X
XX       XX        X
XX       XX        X
XX       XX        X
XX       XX        X
XX       XX        X
XX        X        X
XX                 X
XX                 X
XXX               XX
XXXX             XXX
XXXXXXX       XXXXXX
XXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXX
" => 5, "
XXXXXXXXXXXX
XXXXXXXXXXXX
XXXXXXXXXXXX
XXXXXXXXXXXX
XXXXXXXXXXXX
XXXXXXXXXXXX
XXXXXXXXXXXX
XXXXXXXXXXXX
XXXXXXXXXXXX
XXXXXXXXXXXX
XXXXXXXXXXXX
XXXXXXXXXXXX
XXXXXXXXXXXX
XXXXXXXXXXXX
XXXXXXXXXXXX
XXXXXXXXXXXX
XXXXXXXXXXXX
XX         X
XX         X
XX         X
XX         X
XX         X
XXXXXXXXXXXX
XXXXXXXXXXXX
XXXXXXXXXXXX
XXXXXXXXXXXX
XXXXXXXXXXXX
XXXXXXXXXXXX
XXXXXXXXXXXX
XXXXXXXXXXXX
XXXXXXXXXXXX
XXXXXXXXXXXX
XXXXXXXXXXXX
XXXXXXXXXXXX
XXXXXXXXXXXX
XXXXXXXXXXXX
XXXXXXXXXXXX
XXXXXXXXXXXX
XXXXXXXXXXXX
XXXXXXXXXXXX
XXXXXXXXXXXX
" => "-", "
XXXXXXXXXXXX
XXXXXXXXXXXX
XXXXXXXXXXXX
XXXXXXXXXXXX
XXXXXXXXXXXX
XXXXXXXXXXXX
XXXXXXXXXXXX
XXXXXXXXXXXX
XXXXXXXXXXXX
XXXXXXXXXXXX
XXXXXXXXXXXX
XXXXXXXXXXXX
XXXXXXXXXXXX
XXXXXXXXXXXX
XXXXXXXXXXXX
XXXXXXXXXXXX
XXXXXXXXXXXX
XXXXXXXXXXXX
XXXXXXXXXXXX
XXXXXXXXXXXX
XXXXXXXXXXXX
XXXXXXXXXXXX
XXXXXXXXXXXX
XXXXXXXXXXXX
XXXXXXXXXXXX
XXXXXXXXXXXX
XXXX       X
XXXX       X
XXXX       X
XXX       XX
XXX       XX
XXX       XX
XXX      XXX
XXX      XXX
XXX     XXXX
XXX     XXXX
XX      XXXX
XX     XXXXX
XX     XXXXX
XXXXXXXXXXXX
XXXXXXXXXXXX
" => ",","
XXXXXXXXX
XXXXXXXXX
XXXXXXXXX
XXXXXXXXX
XX     XX
X  XXX  X
X  XXX  X
X  XXX  X
X  XXX  X
X  XXX  X
X  XXX  X
X  XXX  X
XX     XX
XXXXXXXXX
XXXXXXXXX
XXXXXXXXX
" =>0,"
XXXXXXXX
XXXXXXXX
XXXXXXXX
XXXXXXXX
XXX  XXX
X    XXX
XXX  XXX
XXX  XXX
XXX  XXX
XXX  XXX
XXX  XXX
XXX  XXX
X      X
XXXXXXXX
XXXXXXXX
XXXXXXXX
" =>1,"
XXXXXXXXX
XXXXXXXXX
XXXXXXXXX
XXXXXXXXX
XX     XX
X  XXX  X
X  XXX  X
XXXXXX  X
XXXXX  XX
XXXX  XXX
XXX  XXXX
XX  XXXXX
X       X
XXXXXXXXX
XXXXXXXXX
XXXXXXXXX
" =>2,"
XXXXXXXXX
XXXXXXXXX
XXXXXXXXX
XXXXXXXXX
XX     XX
X  XXX  X
X  XXX  X
XXXXXX  X
XXXX   XX
XXXXXX  X
X  XXX  X
X  XXX  X
XX     XX
XXXXXXXXX
XXXXXXXXX
XXXXXXXXX
" =>3,"
XXXXXXXXXX
XXXXXXXXXX
XXXXXXXXXX
XXXXXXXXXX
XXXXX  XXX
XXXX   XXX
XXX X  XXX
XX XX  XXX
X XXX  XXX
X        X
XXXXX  XXX
XXXXX  XXX
XXXXX  XXX
XXXXXXXXXX
XXXXXXXXXX
XXXXXXXXXX
" =>4,"
XXXXXXXXX
XXXXXXXXX
XXXXXXXXX
XXXXXXXXX
XX      X
XX  XXXXX
XX  XXXXX
XX     XX
XXXXXX  X
XXXXXX  X
X  XXX  X
X  XXX  X
XX     XX
XXXXXXXXX
XXXXXXXXX
XXXXXXXXX
"=>5,"
XXXXXXXXX
XXXXXXXXX
XXXXXXXXX
XXXXXXXXX
XXX    XX
XX  XXXXX
X  XXXXXX
X      XX
X  XXX  X
X  XXX  X
X  XXX  X
X  XXX  X
XX     XX
XXXXXXXXX
XXXXXXXXX
XXXXXXXXX
" => 6,"
XXXXXXXXX
XXXXXXXXX
XXXXXXXXX
XXXXXXXXX
X       X
XXXXXX  X
XXXXXX  X
XXXXX  XX
XXXXX  XX
XXXX  XXX
XXXX  XXX
XXX  XXXX
XXX  XXXX
XXXXXXXXX
XXXXXXXXX
XXXXXXXXX
" =>7,"
XXXXXXXXX
XXXXXXXXX
XXXXXXXXX
XXXXXXXXX
XX     XX
X  XXX  X
X  XXX  X
X  XXX  X
XX     XX
X  XXX  X
X  XXX  X
X  XXX  X
XX     XX
XXXXXXXXX
XXXXXXXXX
XXXXXXXXX
"=>8,"
XXXXXXXXX
XXXXXXXXX
XXXXXXXXX
XXXXXXXXX
XX     XX
X  XXX  X
X  XXX  X
X  XXX  X
X  XXX  X
XX      X
XXXXXX  X
XXXXX  XX
XX    XXX
XXXXXXXXX
XXXXXXXXX
XXXXXXXXX
" =>9,"
XXXXXX
XXXXXX
XXXXXX
XXXXXX
XXXXXX
XXXXXX
XXXXXX
XXXXXX
XXXXXX
XXXXXX
XXXXXX
XX   X
XX  XX
XX  XX
X  XXX
X  XXX
"=>",","
XXXXXXX
XXXXXXX
XXXXXXX
XXXXXXX
XXXXXXX
XXXXXXX
XXXXXXX
XXXXXXX
X     X
XXXXXXX
XXXXXXX
XXXXXXX
XXXXXXX
XXXXXXX
XXXXXXX
XXXXXXX
" =>"-", "
XXXXXXX
XXXXXXX
XXXXXXX
XX   XX
X  X  X
X  X  X
X  X  X
X  X  X
X  X  X
XX   XX
XXXXXXX
XXXXXXX
" => 0, "
XXXXXX
XXXXXX
XXXXXX
XX  XX
X   XX
XX  XX
XX  XX
XX  XX
XX  XX
X    X
XXXXXX
XXXXXX
" => 1, "
XXXXXXX
XXXXXXX
XXXXXXX
XX   XX
X XX  X
XXXX  X
XXX  XX
XX  XXX
X  XXXX
X     X
XXXXXXX
XXXXXXX
" => 2, "
XXXXXXX
XXXXXXX
XXXXXXX
XX   XX
X XX  X
XXXX  X
XX   XX
XXXX  X
X XX  X
XX   XX
XXXXXXX
XXXXXXX
" => 3, "
XXXXXXX
XXXXXXX
XXXXXXX
XXX  XX
XX   XX
X X  XX
 XX  XX
      X
XXX  XX
XXX  XX
XXXXXXX
XXXXXXX
" => 4,"
XXXXXXX
XXXXXXX
XXXXXXX
X     X
X  XXXX
X    XX
XXXX  X
XXXX  X
X XX  X
XX   XX
XXXXXXX
XXXXXXX
" =>5,"
XXXXXXX
XXXXXXX
XXXXXXX
XX   XX
X  XXXX
X    XX
X  X  X
X  X  X
X  X  X
XX   XX
XXXXXXX
XXXXXXX
" => 6, "
XXXXXXX
XXXXXXX
XXXXXXX
X     X
XXXX  X
XXX  XX
XXX  XX
XX  XXX
XX  XXX
X  XXXX
XXXXXXX
XXXXXXX
" => 7, "
XXXXXXX
XXXXXXX
XXXXXXX
XX   XX
X  X  X
X  X  X
XX   XX
X  X  X
X  X  X
XX   XX
XXXXXXX
XXXXXXX
" => 8,"
XXXXXXX
XXXXXXX
XXXXXXX
XX   XX
X  X  X
X  X  X
X  X  X
XX    X
XXXX  X
XX   XX
XXXXXXX
XXXXXXX
"=>9,"
XXXXX
XXXXX
XXXXX
XXXXX
XXXXX
XXXXX
X   X
XXXXX
XXXXX
XXXXX
XXXXX
XXXXX
" => "-", "
XXXX
XXXX
XXXX
XXXX
XXXX
XXXX
XXXX
XXXX
X  X
X  X
X  X
X XX
" => ",");


my $ua = LWP::UserAgent->new;
$ua->agent ("Destupidifier/0.1");
my $htmlparser = HTML::Parser->new( api_version => 3 );
$htmlparser->handler(
  default => sub {
    my ( $self, $text ) = @_;
    $self->{output} .= $text
  }, "self,text");
$htmlparser->handler(
  start => sub {
    my ( $self, $tag, $text ) = @_;
    if ($tag eq "img" and $text =~ /src=".*digit.*"/) {
      my ($src) = $text =~ /src="(.*?)"/;
      my $req = new HTTP::Request ('GET' => $src, HTTP::Headers->new ('Content-Type' => 'application/x-www-form-urlencoded'));
      my $res = $ua->request ($req);
      $res->is_error && print "Can't get page $src";
      my $tempname = "/tmp/$$." . time . ".tmp";
      open (FH, ">$tempname") || die $!;
      print FH $res->content ();
      close FH;
      my $p = new Image::Magick;
      $p->Read($tempname);
      my ($width, $height) = $p->Get('width', 'height');
      my $str = "\n";
      for( my $j = 0; $j < $height; $j++ ) {
        for( my $i = 0; $i < $width; $i++ ) {
          my @pixel = $p->GetPixel( x=>$i, y=>$j );
          if ($pixel[0] eq 1) { $str .= "X"; } else { $str .= " "; };
        };
        $str .= "\n";
      };
      if (defined $chars{$str}) {
        my $alt = $chars{$str};
        $text =~ s,>$, alt="$alt">,;
      }
      else { print STDOUT $str; };
    };
    $self->{output} .= $text
  }, "self,tagname,text");

my $proxy = HTTP::Proxy->new(port => 3128);
my $htmlfilter = HTTP::Proxy::BodyFilter::htmlparser->new($htmlparser,
							  rw => 1);
$proxy->push_filter(mime => 'text/html', response => $htmlfilter);
$proxy->start();

