Foro de elhacker.net

Programación => Scripting => Mensaje iniciado por: idst en 5 Diciembre 2012, 16:34 pm



Título: Perl script para conseguir proxies en la terminal?
Publicado por: idst en 5 Diciembre 2012, 16:34 pm
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.

Código
  1. use strict;
  2. use LWP::UserAgent;
  3.  
  4. my $source = 'http://www.hidemyass.com/proxy-list/';
  5. my $agent = 'Mozilla/5.0 (X11; Linux i686) Firefox/16.0';
  6.  
  7. my $browser = LWP::UserAgent->new( agent => $agent );
  8. my $response = $browser->get($source);
  9. die "Can't get $source\n" unless $response->is_success;
  10. my $content = $response->content;
  11.  
  12. print 'UPDATE |    IP ADDRESS:PORT    |   TYPE   | COUNTRY | SPEED',
  13. " | CTIME | ANON LVL\n", '~' x 78, "\n";
  14.  
  15. while ( $content =~ m/(<tr class=".*?<\/tr>)/gs ) {
  16.   my $tr = $1;
  17.   my %data;
  18.   while ( $tr =~ m/(<td[^>]*>.*?<\/td>)/gs ) {
  19.       my $td = $1;
  20.       if ( $td =~ m/updatets\s*">\s*(\d+ (:?secs|minutes?))</ ) {
  21.           $data{'update'} = $1;
  22.       }
  23.       elsif ( $td =~ m/<style>/ ) {
  24.           $data{'ip'} = de_css($td);
  25.       }
  26.       elsif ( $td =~ m/<td>\s*(\d+)\s*<\/td>/ ) {
  27.           $data{'port'} = $1;
  28.       }
  29.       elsif ( $td =~ m/class="country".*?>\s*([^<]+)<\s/s ) {
  30.           $data{'country'} = $1;
  31.       }
  32.       elsif ( $td =~ m/response_time.*?"width:(\d+%)"/s ) {
  33.           $data{'rtime'} = $1;
  34.       }
  35.       elsif ( $td =~ m/connection_time.*?"width:(\d+%)"/s ) {
  36.           $data{'ctime'} = $1;
  37.       }
  38.       elsif ( $td =~ m/<td>(https?|socks4\/5)<\/td>/i ) {
  39.           $data{'type'} = $1;
  40.       }
  41.       elsif ( $td =~ m/rightborder">([^<]+)<\/td>/ ) {
  42.           $data{'anon'} = $1;
  43.       }
  44.   }
  45.  
  46.   printf "%6s | %-21s | %-8s | %-7s | %-5s | %-5s | %-8s\n",
  47.     substr( $data{'update'}, 0, 6 ), "$data{'ip'}:$data{'port'}",
  48.     $data{'type'},
  49.     substr( $data{'country'}, 0, 7 ), $data{'rtime'}, $data{'ctime'},
  50.     $data{'anon'};
  51. }
  52.  
  53. sub de_css {
  54.   my $ip = shift;
  55.   $ip =~ s/<(:?div|span) style="display:none">[^<]*<\/[^>]+>//g;
  56.   $ip =~ s/\.[\w\-_]+\{display:inline\}//g;
  57.  
  58.   while ( $ip =~ m/\.([\w\-_]+)\{display:none\}/g ) {
  59.       my $class = $1;
  60.       $ip =~ s/\.$class\{display:none\}//;
  61.       $ip =~ s/<span class="$class">[^<]*<\/span>//g;
  62.   }
  63.  
  64.   $ip =~ s/\s*//gs;
  65.  
  66.   return join '', $ip =~ m/>([^<]+)</gs;
  67. }
  68.  
  69. __END__


Título: Re: Perl script para conseguir proxies en la terminal?
Publicado por: Eleкtro en 7 Diciembre 2012, 19:59 pm
Me gusta el script, buen proxy-leecher

Aquí tienes otros sitios para añadir:
http://www.ip-adress.com/proxy_list/
http://spys.ru/en/

PD: Google + proxy list

saludos