Advertisement
hackloper775

Perl_forms

Sep 4th, 2013
143
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Perl 2.58 KB | None | 0 0
  1. #!/usr/bin/env perl
  2. #
  3. use warnings;
  4. use strict;
  5. use WWW::Mechanize::GZip;
  6. use feature 'say';
  7. use constant {
  8.     true => 1,
  9.     false =>0
  10. };
  11.  
  12. my $mech = WWW::Mechanize::GZip->new();
  13.  
  14. my @agents = (
  15.         "Windows IE 6",
  16.         "Windows Mozilla",
  17.         "Mac Safari",
  18.         "Mac Mozilla",
  19.         "Linux Mozilla",
  20.         "Linux Konqueror"
  21. );
  22.  
  23. my $args = {};
  24.  
  25. print "Url: ";
  26.  
  27. chomp(my $url = <STDIN>);
  28.  
  29. $url = "http://" . $url if (substr($url,0,7) ne "http://");
  30.  
  31. my $i = 1;
  32.  
  33. for (@agents)
  34. {
  35.     say $i ." : " . $_;
  36.     $i++;
  37. }
  38.  
  39. while (true)
  40. {
  41.     print "Elige un user agent: ";
  42.     chomp(my $response = <STDIN>);
  43.     if ($response !~ /\D/ and $response ne '')
  44.     {
  45.         if ($response <= scalar(@agents)) {
  46.             $args->{agent} = $agents[$response-1];
  47.             last;
  48.         }
  49.         else
  50.         {
  51.             say "User agent no disponible";
  52.         }
  53.     }
  54.     else
  55.     {
  56.         say "NUeros por favor";
  57.     }
  58.    
  59. }
  60.  
  61. $mech->agent_alias($args->{agent});
  62.  
  63. $mech->get($url) || die $!;
  64.  
  65. say (('*' x 30) . " Informacion " . ('*' x 30));
  66.  
  67. print $_->dump for $mech->forms();
  68.  
  69. {
  70.     require LWP::UserAgent;
  71.     my $ua = LWP::UserAgent->new;
  72.     $ua->timeout(10);
  73.     $ua->env_proxy;
  74.  
  75.     my $response = $ua->get($url);
  76.  
  77.     if ($response->is_success) {
  78.          my @forms = parse($response->decoded_content);
  79.          if (@forms) {
  80.             foreach (@forms)
  81.             {
  82.                 say (('*' x 80));
  83.                 say $_;
  84.             }
  85.          }
  86.     }
  87.     else {
  88.         die $response->status_line;
  89.     }
  90. }
  91.  
  92. acces_forms();
  93.  
  94. my $result = $args->{response}->content();
  95.  
  96. say $result;
  97.  
  98. open(FILE, "> page.html") or die $!;
  99.    print FILE $result ;
  100. close FILE;
  101.  
  102.  
  103. sub acces_forms
  104. {
  105.     say "Submit for request";
  106.     print "Form id : ";
  107.     chomp($args->{form_id} = <STDIN>);
  108.     my $fields = {};
  109.     while (true)
  110.     {        
  111.         print "Field : ";
  112.         chomp(my $field = <STDIN>);
  113.         last if($field eq "Submit");
  114.         print "Value : ";
  115.         chomp(my $value = <STDIN>);
  116.         $fields->{$field} = $value;
  117.     }
  118.     $args->{response} = $mech->submit_form(
  119.         form_id => $args->{form_id},
  120.         #form_number=> 1,
  121.         fields => $fields
  122.     );
  123. }
  124.  
  125. sub parse
  126. {
  127.     my $html = shift;
  128.     my  @forms = ();
  129.     while ($html =~ m{\<form(.*?)\>}g)
  130.     {
  131.         push (@forms,$1);
  132.     }
  133.     while ($html =~ m{\<input(.*?)\>}g)
  134.     {
  135.         push (@forms,$1);
  136.     }
  137.     if (@forms) {
  138.         return @forms;
  139.     }
  140.     else
  141.     {
  142.         return false;
  143.     }
  144. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement