mactfines
asked on
New with libwww-perl and am stuck trying to POST a form.
I am new to libwww perl, and am trying to POST a request, and I am just frustrating myself at this point.
I am trying to write a UA (User Agent) to login to our Barracuda anti-spam box so it can gather some stats.
I can access the initial URL where the login screen is. I can gather and populate the form fields using HTML::Form. But when I try to POST the filled out form back, I always get a 302 result code ("Moved"). This happens whether I use the correct or incorrect password. The 'Content' string LWP is passing back looks the same as the one I grabbed with a packet sniffer when I accessed the system with my browser.
I could just use some help in figuring this out. Let me know what else would be useful to post and I'll post it.
Thanks!
I am trying to write a UA (User Agent) to login to our Barracuda anti-spam box so it can gather some stats.
I can access the initial URL where the login screen is. I can gather and populate the form fields using HTML::Form. But when I try to POST the filled out form back, I always get a 302 result code ("Moved"). This happens whether I use the correct or incorrect password. The 'Content' string LWP is passing back looks the same as the one I grabbed with a packet sniffer when I accessed the system with my browser.
I could just use some help in figuring this out. Let me know what else would be useful to post and I'll post it.
Thanks!
#!/usr/bin/perl
use strict;
use warnings;
use LWP::UserAgent;
use HTML::Form;
my $p;
my $domain = 'macalester.edu';
my $barracuda = "barracuda.$domain";
my $cookies = "/tmp/$barracuda";
my $from = "fines\@$domain";
my $proto = 'http'; # change to 'https' if using https
my $url = "$proto://$barracuda/cgi-bin/index.cgi";
my $user = 'admin';
my $password='secret';
$p->{host} = "$proto://$barracuda";
$p->{timeout} = 60;
$p->{agent} = 'LWP 5.808';
my $ua = LWP::UserAgent->new;
$ua->timeout($p->{timeout});
my $response = $ua->get($url);
if ($response->is_success) {
print $response->content; # or whatever
} else {
die $response->status_line;
}
print "code is " . $response->code . "\n";
print "message is " . $response->message . "\n";
my @forms = HTML::Form->parse($response);
my $form=$forms[0];
print "this form has this many inputs: " . $form->inputs . "\n";
$form->value('user',$user);
$form->value('password',$password);
my $enc_key=$form->value('enc_key');
my $et=$form->value('et');
my $request=$form->click;
$request->header(Host => '141.140.1.35');
print "content is " . $request->content . "\n";
my $c=$request->content;
$c .= "&password_entry=";
$request->content($c);
$request->header('Content-length' => length($c));
$request->protocol('HTTP/1.1');
$request->header('User-Agent' => $p->{agent});
$request->header('Accept' => 'text/html');
print "content is " . $request->content . "\n";
print "request is:\n" . $request->as_string . "\n";
$response=$ua->request($request);
print "code is " . $response->code . "\n";
print "message is " . $response->message . "\n";
ASKER CERTIFIED SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Computer101
EE Admin