Estaba buscando un sitio con proxies para unas pruebas con Proxychains y los únicos que encontré que funcionan son de htt://www. hidemyass.com/proxy-list/. El problema es que las IP parecen estar ofuscadas con CSS, así que lo resolví con regex pero no estoy seguro que sea la mejor forma.
De uqe otra forma se puede hacer o alguien sabe de otro sitio? Gracias.
De uqe otra forma se puede hacer o alguien sabe de otro sitio? Gracias.
Código (perl) [Seleccionar]
use strict;
use LWP::UserAgent;
my $source = 'http://www.hidemyass.com/proxy-list/';
my $agent = 'Mozilla/5.0 (X11; Linux i686) Firefox/16.0';
my $browser = LWP::UserAgent->new( agent => $agent );
my $response = $browser->get($source);
die "Can't get $source\n" unless $response->is_success;
my $content = $response->content;
print 'UPDATE | IP ADDRESS:PORT | TYPE | COUNTRY | SPEED',
" | CTIME | ANON LVL\n", '~' x 78, "\n";
while ( $content =~ m/(<tr class=".*?<\/tr>)/gs ) {
my $tr = $1;
my %data;
while ( $tr =~ m/(<td[^>]*>.*?<\/td>)/gs ) {
my $td = $1;
if ( $td =~ m/updatets\s*">\s*(\d+ (:?secs|minutes?))</ ) {
$data{'update'} = $1;
}
elsif ( $td =~ m/<style>/ ) {
$data{'ip'} = de_css($td);
}
elsif ( $td =~ m/<td>\s*(\d+)\s*<\/td>/ ) {
$data{'port'} = $1;
}
elsif ( $td =~ m/class="country".*?>\s*([^<]+)<\s/s ) {
$data{'country'} = $1;
}
elsif ( $td =~ m/response_time.*?"width:(\d+%)"/s ) {
$data{'rtime'} = $1;
}
elsif ( $td =~ m/connection_time.*?"width:(\d+%)"/s ) {
$data{'ctime'} = $1;
}
elsif ( $td =~ m/<td>(https?|socks4\/5)<\/td>/i ) {
$data{'type'} = $1;
}
elsif ( $td =~ m/rightborder">([^<]+)<\/td>/ ) {
$data{'anon'} = $1;
}
}
printf "%6s | %-21s | %-8s | %-7s | %-5s | %-5s | %-8s\n",
substr( $data{'update'}, 0, 6 ), "$data{'ip'}:$data{'port'}",
$data{'type'},
substr( $data{'country'}, 0, 7 ), $data{'rtime'}, $data{'ctime'},
$data{'anon'};
}
sub de_css {
my $ip = shift;
$ip =~ s/<(:?div|span) style="display:none">[^<]*<\/[^>]+>//g;
$ip =~ s/\.[\w\-_]+\{display:inline\}//g;
while ( $ip =~ m/\.([\w\-_]+)\{display:none\}/g ) {
my $class = $1;
$ip =~ s/\.$class\{display:none\}//;
$ip =~ s/<span class="$class">[^<]*<\/span>//g;
}
$ip =~ s/\s*//gs;
return join '', $ip =~ m/>([^<]+)</gs;
}
__END__