The solution? Hack IO::Socket::INET::_get_addr()... this works for both LWP::Simple as well as the normal LWP::UserAgent.
use IO::Socket::INET; # this must be explicitely loaded, or our change won't have an effect, because LWP will load the module later, over us # Hack at LWP's DNS resolution my $orig_get_addr = \&IO::Socket::INET::_get_addr; *IO::Socket::INET::_get_addr = sub { #print Dumper \@_; if ($_[1] =~ /^(.*\.)libsyn\.com$/si) { #die "Fark!"; $_[1] = '208.68.232.12'; } my @ret = $orig_get_addr->(@_); #print Dumper \@ret; return @ret; };