Спасибо за отклик! проблема в следующем:
Делался perl скрипт, который занимается парсингом сайтов.
В принципе, это обычный прокси-скрипт, который тянет к себе сайты,
однако ему не хватает корректной работы с js содержимым на этих сайтах.
Статический html, css он тянет нормально, но необходимо еще обрабатывать еще
и javascript и отдавать сайт в таком же виде как оригинальный.
#!/usr/bin/perl
use strict;
use CGI;
use CGI::Carp qw(fatalsToBrowser);
use LWP::UserAgent;
use Encode qw(encode decode);
use URI::Escape;
my $PROXY_URL = "http://localhost/proxy/cgi2.pl?u=";
#my $PROXY_URL = "http://dealextreme.com.ua/cgi-bin/proxy/cgi2.pl?u=";
#=======================================================================
my $cgi = CGI->new;
my $URL = $cgi->param("u");
# если не указан протокол в начале ссылки - добавить http по умолчанию
if ($URL !~ m|^\w+://|) {
	$URL = "http://" . $URL;
}
my $content = do_the_job();
# отдать тело ответа клиенту
print $content;
#=======================================================================
sub do_the_job {
	#my $URL = shift;
	my $req_uri = URI->new( $URL );
	if (!$req_uri) {
		print "Content-Type: text/plain\n\n";
		print "Invalid uri [$URL]\n";
		#die;
		return;
	}
	my $req_host = $req_uri->scheme . "://" . $req_uri->host;
	my $url = $req_uri->canonical;
	# запрос от прокси-агента
	my $ua = LWP::UserAgent->new;
	#$ua->default_header('Referer' => uri_escape($PROXY_URL . $req_host));
	$ua->default_header('Referer' => uri_escape($URL));
	my $request = HTTP::Request->new('GET' => $url);
	my $resp = $ua->request($request);
	my $Content;
	# успешен ли был запрос?
	if ($resp->is_success) {
		$Content = $resp->content;
	} else {
		print "Content-Type: text/html; charset=utf-8\n\n";
		print $resp->status_line;
		#die;
		return;
	}
	# разбор ответа
	my $resp_uri = $resp->base;
	my $BASE_URI = URI->new($resp_uri->scheme . "://" . $resp_uri->host);
	my $PROXIED_URI = $PROXY_URL . $BASE_URI;
	my $Content_Type = $resp->content_type;
	my $Output_Encoding = $resp->content_charset;
	# печатаем заголовки ответа - MIME и кодировку
	print "Content-Type: " . $Content_Type;
	if ($Output_Encoding) {
		print "; charset=" . $Output_Encoding;
	}
	print "\n\n";
	# пропустить обработку следующих MIME-типов
	my $processing_needed = 1;
	#image/*, */*xml
	#application/x-shockwave-flash
	for (qw(image xml flash)) {
		if ($Content_Type =~ /\Q$_\E/i) {
			$processing_needed = 0;
			$Output_Encoding = undef;
			last;
		}
	}
	# переработка содержимого если нужно
	if ($processing_needed) {	
		$Content = process_content($Content, $Content_Type);
	}
	# вернуть тело ответа
	return $Content;
}
#-----------------------------------------------------
sub process_content {
	my ($content, $Content_Type) = @_;
	
	if ($Content_Type =~ /javascript/io) {
		$content = rewrite_JS($content);
	}
	elsif ($Content_Type =~ /css/io) {
		$content = rewrite_CSS($content);
	} 
	else {		
		# presuming CType is text/html
		
		# process embedded css
		$content =~ s|(<style.*?type=\"text/css\".*?>)(.+?)(</style>)|$1 . rewrite_CSS($2) . $3|gieso;
		$content =~ s|(style=([\"\']))(.*?)\2|$1 . rewrite_CSS($3) . $2|gieso;
		
		# process embedded javascript
		$content =~ s|(<script type=\"text/javascript\">)(.+?)(</script>)|$1 . rewrite_JS($2) . $3|gieso;
		$content =~ s|(<script language=\"javascript.*?\">)(.+?)(</script>)|$1 . rewrite_JS($2) . $3|gieso;
		
		# process HTML
		$content = rewrite_HTML($content);		
		#$content =~ s|\n||go;
		
		# добавляем собственный js
my $JS = <<"JS";
	function show_scripts () {
		var list = document.getElementsByTagName('script');
		var msg = "";
		var scr;
		for (var i=0; i<list.length; i++) {
			scr = list[i];
			if (scr.src) {
				msg += scr.src + ' *** ';
				//g.src = 'http://localhost/proxy/cgi2.pl?u=' + img.src;
			}
		}
		alert(document.location + " *** All scripts:" + msg);
	}
	//show_scripts();
JS
	
		$content .= "\n<script>". $JS ."</script>";
	}
	return $content;
}
#-----------------------------------------------------
sub rewrite_JS {
	$_ = shift;	
	# убрать пробелы между "+" и кавычками
	#s|(\+)\s+([\'\"])|$1$2|gso;
	#s|([\'\"])\s+(\+)|$1$2|gso;
	#s|(\+)\s+([^\+])|$1$2|gso;
	
	# заменить ссылки
	#s#(\.(?:location|href|src)\s*=\s*([\"\']))(.+?)\2#$1 . $PROXY_URL . get_abs_uri($3,$URL) . $2#gsie;
	s#(\.(?:location|href|src)\s*=\s*([\"\']))(.+?)([\"\'])#$1 . $PROXY_URL . get_abs_uri($3,$URL) . $4#gsie;
	#s#(\.(?:location|action|href|src)\s*=\s*)([^\"\']+?)([;\s])#$1 . $PROXY_URL . get_abs_uri($2,$URL) . $3#gsie;
	
	#s#((?:background|action|href|src)=([\"\']))(.*?)\2#$1 . replace_link($3) . $2#egsi;
	s#(\b(?:background|href|src)\s*=\s*([\"\']))(.*?)([\"\'])#$1 . replace_link($3) . $4#egsi;
	#s#(\b(?:background|virtual|action|href|src)\s*=\s*)([^\"\']+?)(\s)#$1 . replace_link($2) . $3#egsi;
	#s#((?:open|redirect)\s*\(\s*([\"\']))(.+?)\2#$1 . $PROXY_URL . get_abs_uri($3,$URL) . $2#gsie;	
	
	return $_;
}
sub rewrite_CSS {
	$_ = shift;	
	
	s|(url\([\'\"]?)(.+?)([\'\"]?\))|$1 . $PROXY_URL . get_abs_uri($2,$URL) . $3|gieo ;	
	s|(\@import ([\"\']))(.+?)\2|$1 . $PROXY_URL . get_abs_uri($3,$URL) . $2|gieo;
	
	return $_;
}
sub rewrite_HTML {
	$_ = shift;
	
	# vkontakte
	s|var vklogin = false;|var vklogin = true;|gsi;
	s|if \(parent && parent != window.+?}\);.+?}||sgo;
	#s|Ajax\.postWithCaptcha\(\'\/login\.php\',|Ajax.postWithCaptcha('http://vkontakte.ru/login.php',|sgio;
	
	# all
	#s#(background|action|href|src)=([\"\'])([^\2]*?)\2#replace_link($1,$2,$3)#egsi;
	#s#((?:background|virtual|action|href|src)=([\"\']))(.*?)\2#$1 . replace_link($3) . $2#egsi;	
	#s#((?:background|virtual|action|href|src)\s*=\s*([\"\']))(.*?)\2#$1 . replace_link($3) . $2#egsi;
	s#(\b(?:background|virtual|action|href|src)\s*=\s*([\"\']))(.*?)([\"\'])#$1 . replace_link($3) . $4#egsi;
	#s#((?:background|virtual|action|href|src)\s*=\s*)([^\"\']+?)(\s)#$1 . replace_link($2) . $3#egsi;
	
	# meta
	s|(<meta http-equiv=\"Refresh\" content=\"\d+?;URL=)(.+?)\"|$1 . $PROXY_URL . get_abs_uri($2,$URL) . '"'|gsie;
	
	# js-handlers in html tags
	# window.open =>
	s|(\.open\s*\(\s*([\"\']))(.+?)\2|$1 . $PROXY_URL . get_abs_uri($3,$URL) . $2|gsie;
	
	# flash
	s|(<param name=\"movie\" value=([\"\']))([^u].+?)(\2.*?/>)|$1 . $PROXY_URL . get_abs_uri($3,$URL) . $4 |gsie;
	
	s|(\+)\s+([\'\"])|$1$2|gso;
	s|([\'\"])\s+(\+)|$1$2|gso;
	s|(\+)\s+([^\+])|$1$2|gso;
	
	return $_;
}
sub get_abs_uri {
	my ($rel, $base) = @_;
	
	$rel =~ s/^[\"\']//;
	$rel =~ s/[\"\']$//;
	
	return uri_escape ( URI->new($rel)->abs($base)->as_string() );
}
sub replace_link {
	my $link = shift;
	#return "" if $link eq "";
	
	my $str;
	
	# не "абсолютизировать" если это ссылка на локальный для данной страницы javascript-код
	# или ссылка на '#'
	if ($link =~ /^javascript:/io || $link =~ /^#/o) {
		$str = $link;
	} else {
		$str = $PROXY_URL . get_abs_uri($link, $URL);
	}
	
	return $str;
}
sub convert {
	my ($content, $to) = @_;
	return $content if !defined $to;
	return encode ($to, decode('UTF-8', shift));
}
sub convert_from {
	my ($content, $from) = @_;
	return $content if !defined $from;
	return encode ('utf-8', decode($from, shift));
}