elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Trabajando con las ramas de git (tercera parte)


  Mostrar Temas
Páginas: [1]
1  Programación / Scripting / Perl script para conseguir proxies en la terminal? 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__
Páginas: [1]
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines