I am trying to send sms through Way2sms using Perl LWP. The login part is being successful, after which I save the cookies to a local file. The welcome page after being logged in shows a Send SMS link, clicking on which one is redirected to another page with two inputs for mobile number and sms text and a button for submitting and sending the sms. Firebug reveals the page structure as shown in the figure. From the Iframe url and the form's action
attribute, I constructed the form action's absolute URL and submit the form accordingly, with the cookie stored in the file. However, the sms isn't sent. What I am doing wrong here? The code is as follows. (The name
attributes for the two text inputs are correct, taken by observing the source code in Firebug, although that's not included in the image)
use LWP::UserAgent;
open f, "> way2sms.txt";
use HTTP::Cookies;
my $cookie_jar = HTTP::Cookies->new(
file => "cookies.txt",
autosave => 1,
);
my $ua = LWP::UserAgent->new(
agent =>
'Mozilla/5.0 (X11; Linux x86_64; rv:14.0) Gecko/20100101 Firefox/14.0.1',
cookie_jar => $cookie_jar,
);
my $response = $ua->post(
'http://site2.way2sms.com/contentt/bar/Login1.action',
{
username => $user,
password => $pass,
}
);
if ( $response->is_redirect ) {
$response = $ua->get( $response->header('Location') );
print 5 if $response->decoded_content =~ /Kaustav Mukherjee/i; #prints it, showing that the login is successful
}
my $smsresp = $ua->post("http://site5.way2sms.com/jsp/quicksms.action",[MobNo=>$mob,textArea=>'Hello World']);
WORKING SCRIPT: (Tested on 6/Sep/2012 3:00 PM GMT+5:30)
use LWP::UserAgent;
use HTTP::Cookies;
my $ua = LWP::UserAgent->new(agent=>"Mozilla/5.0 (X11; Linux x86_64; rv:14.0) Gecko/20100101 Firefox/14.0.1");
$ua->cookie_jar({ file => "/absolute/path/to/cookies.txt", autosave => 1 });
# if windows, use \ instead of /
# $ua->proxy(['http', 'ftp'], 'http://localhost:9666/');
# below line seems to have done the trick
push @{ $ua->requests_redirectable }, 'POST';
my $response = $ua->post(
'http://site5.way2sms.com/Login1.action',{
"username" => "1234567890", # set your username
"password" => "passwd0123", # set your password
"userLogin" => "yes",
"message" => "",
"mobileNo" => "",
}
);
if($response->is_success && $response->decoded_content =~ /Logout/i){ # you can have your name too in place of Logout
print "Logged in!\r\n";
}
my $mob = "1234567890"; # mobile to send message to
my $mes = "Hello! 123."; # message
my $smsresp = $ua->post(
"http://site5.way2sms.com/quicksms.action",
{
'Action' => 'dsf45asvd5',
'HiddenAction' => 'instantsms',
'catnamedis' => 'Birthday',
'chkall' => 'on',
'MobNo' => $mob,
'textArea' => $mes,
});
if ($smsresp->is_success && $smsresp->decoded_content =~ /Submitted/i) {
print "Sent!\r\n";
}
P.S. I wish I could get that expired bounty O_o :)