To start, it is NOT a hacking job. I want to access my USAGE report from my ISP. At the home page I have to select Account Management then login with my user name and pw from newly created prompt. One clicking login I get yet another prompt so I select usage report from dynamically displayed selection(dropdown) , then click select. That will direct me to the report page that I want to save as html. Then logout from that page. There are a lot of js and it it is not easy to navigate (The home page) but it does it's functions.

I did spend a lot of time trying on my own, using of course Machanize; but I need your help.

If someone here did a similar perl script, I will apprecite some workflow that I can initiate with your guidance.

Recommended Answers

All 5 Replies

Here is my latest effort in the subject The two screen shots indicate when I use the link (in the code) I get the login screen , I type User and PW press login , I get the second screen. I need to save this screen as html.

use 5.010;
use strict;
use warnings;

use Win32::Internet; 
my $INET= new Win32::Internet();
$INET ->HTTP(my $HTTP, "'http://www.tedata.net/eg/en/Manage-ADSL-Account/Check-Usage'", "123456", "123456789");

my ($statuscode, $headers, $file)=$HTTP->Request("/");
say $statuscode;
say $headers;
binmode STDOUT;
print $file;

Dani01Dani002

Look in to the module WWW::Mechanize

use strict;
use warnings;
use WWW::Mechanize;

my $mech = WWW::Mechanize->new;

$mech->get("http://url");

my $site = $mech->content; #site saved as html

you can also you the module to log you in the site and do things...

Thank you so much for your response, here what I did following your suggestion:

use WWW::Mechanize;
my $username = '123456@tedata.net.eg'; ## watch the weired way they are designing it
my $password = "123456789"; 
my $url = "http://www.tedata.net/eg/en/Manage-ADSL-Account/Check-Usage"; 
my $mech = WWW::Mechanize->new();
$mech->get($url);
## 
$mech->form("aspnetForm"); # The Login Form Name   I am not sure
$mech->field('ctl00$ContentPlaceHolder1$Txt_ADSL_UserName', $username); # I am not sure
$mech->field('ctl00$ContentPlaceHolder1$Txt_ADSL_Password', $password); # I am not sure
$mech->click("Login"); # I am not sure

my $current_site = $mech->{uri}; 

Perl did not like my form details. The page is written in a very complicated way( also js etc)
May be you can give me a hand ( the link above can give you access to the form details).

Or may be I am doing it the wrong way all together.

try this:

#!/usr/bin/perl

use strict;
use warnings;
use WWW::Mechanize;

##########
my $url = 'http://www.tedata.net/eg/en/Manage-ADSL-Account/Check-Usage';
my $user = '123456';
my $pass = '123456789';
#########





my $mech = WWW::Mechanize->new();

$mech->get($url);

$mech->form_number(2); #set the number 2 form as the one we want

$mech->set_fields( 'ctl00$ContentPlaceHolder1$Txt_ADSL_UserName' => $user);
$mech->set_fields( 'ctl00$ContentPlaceHolder1$Txt_ADSL_Password' => $pass);

$mech->click_button(value =>'Login' );


print $mech->content;

1;

It worked like a charm wow. Very smart of you to use form number not text and the real one is actually reading the page code and using form 2.
I worked on it for 2 weeks
Thank you so much for taking the time and solving the problem.

Be a part of the DaniWeb community

We're a friendly, industry-focused community of developers, IT pros, digital marketers, and technology enthusiasts meeting, networking, learning, and sharing knowledge.