perl (scarlet meter)

Plaats reactie
gini
Starter
Starter
Berichten: 20
Lid geworden op: 12 mei 2004, 18:21

ik heb een klein perl-scriptje gemaakt voor die mijn verbruik laat zien, maar ik krijg altijd maar de verkeerde pagina.

hier is het scripts:

Code: Selecteer alles

#!/usr/bin/perl -w
$uid="username";
$pwd="passwd";
system("curl -c .koekjes -sLe ';auto' -d 'login=$uid' -d 'password=$pwd' -d 'submit=aanmelden'  'http://customercare.scarlet.be/logon.do?language=nl' &>/dev/null");
$sossis=`grep JSESSIONID .koekjes | cut -f 7`;
chomp($sossis);
$url="http://customercare.scarlet.be/usage/dispatch.do?command=detail\&usercode=$sossis\&language=nl";
print $url;
open(SCARLET, "curl -sLe ';auto' '$url'  |");
foreach $line(<SCARLET>){ print $line;}
$down=(grep "GB",<SCARLET>);
$up=(grep "GB", <SCARLET>);
print "Downloaded: $down GB\nUploaded: $up\n";
system("rm .koekjes");
print $sossis


dit is nog maar een testversie en zoals je kan zien print ik $url en de inhoud van de pagina ook p het scherm (om te debuggen).

nu is het probleem dat als ik op de url klik de juiste pagina wordt geladen, maar de pagina is een hele andere pagina

Code: Selecteer alles

./test-scarlet.pl
http://customercare.scarlet.be/usage/dispatch.do?command=detail&usercode=0315012B6CD0F943EBC9FD47B7ED3D7A&language=nl






<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
   <head>
      <title>mijn.scarlet.be - Beheer uw abonnement</title>
      <style type="text/css" media="all"> @import url("/_css/myscarlet.css"); </style><link rel="stylesheet" href="/_css/nav.css" type="text/css" media="all" /> <link rel="stylesheet" href="/_css/nav.css" type="text/css" media="all" />
   </head>

   <body id="home" class="dutch">
   <div id="container">

      <div id="content">
         <h1 id="top"></h1>

         <div id="header">
         </div>


         <br class="cr">
         <br class="cr">
         <br class="cr">
         <br class="cr">
         <br class="cr">
        <center>
        <a href="index.jsp?language=nl">Nederlands</a>
        <a href="index.jsp?language=fr">Fran\uffffais</a>
        </center>
         </div>
      </div>
   </div>
   </body>
</html>

Downloaded: 0 GB
Uploaded: 0
0315012B6CD0F943EBC9FD47B7ED3D7A


heeft dit te maken met een cookie die eerst nog de taal moet instellen? ik heb er echt geen idee van.

hopelijk kan iemand mij helpen!
ubremoved_539
Deel van't meubilair
Deel van't meubilair
Berichten: 29849
Lid geworden op: 28 okt 2003, 09:17
Uitgedeelde bedankjes: 446 keer
Bedankt: 1985 keer

gini schreef:heeft dit te maken met een cookie die eerst nog de taal moet instellen? ik heb er echt geen idee van.


Je hebt er wel een idee van... en nog een correct ook :lol:
Gebruikersavatar
Erik
Elite Poster
Elite Poster
Berichten: 1321
Lid geworden op: 15 sep 2002, 02:46
Uitgedeelde bedankjes: 2 keer
Bedankt: 18 keer

yup jouw probleem heeft met cookies te maken idat is zeker nu ben ik niet genoeg thuis in perl om een oplossing te bedenken maar het zijn zeker de cookies misschien just maybe onder de lijn mee het perl path

Code: Selecteer alles

use CGI::Carp qw(fatalsToBrowser);


nu worden allle mogelijke fouten in je browser venster weergegeven misschien helpt het misschien ook niet :?

ik vind het ook altijd een goed idee om uw script in dees geval eventjes te pauzeren zodat de server je zeker de cookies kan sturen.Zo hebben wij dat destijds gedaan mee "skynettool" die site protesteerde ook als niet alle cokkies aanwezig waren.ook moet je vind ik beginnen met de homepage en niet direct details willen zijn bijvoorbeeld ik kan alleen spreken over skynet want toen was ik een skynet klant (nu niet meer)

https://e-care.skynet.be/Login/index.cf ... &langue=nl

eerst de basispagina laden zo krijg je de vereiste cookies
Registered Linux user #286313
gini
Starter
Starter
Berichten: 20
Lid geworden op: 12 mei 2004, 18:21

kheb het met de hulp van iemand dan toch klaar gekregen om het met curl en system calls te schrijven, maar nu zou ik het graag in puur perl schrijven zodat het ook in windows werkt

dit is het met curl enzo

Code: Selecteer alles

system("curl  -c .cookie 'http://customercare.scarlet.be/logon.do?language=nl' &> /dev/null");
$session=`grep JSESSIONID .cookie | cut -f 7`;
system("curl -c .cookie2  -b .cookie -sL -d 'username=$uid&password=$passwd' http://customercare.scarlet.be/logon.do;jsessionid=$session' &> /dev/null");
open(SCARLET, "curl -sL -b .cookie2 'http://customercare.scarlet.be/usage/dispatch.do'|") ;
@data=<SCARLET>;


en mijn deeltje al met LWP

Code: Selecteer alles

use LWP::UserAgent;
use HTTP::Request::Common qw(POST);
use HTTP::Cookies;
my $cookie=LWP::UserAgent->new();
$cookie->cookie_jar(HTTP::Cookies->new(ignore_discard=>1));
my $cookie2=LWP::UserAgent->new();
$cookie2->cookie_jar(HTTP::Cookies->new(ignore_discard=>1));

my $req1=POST 'http://customercare.scarlet.be/logon.do?language=nl';
my $res1= $cookie->request($req1);
if(my $cookies = $cookie->cookie_jar->as_string)
{
    if(index($cookies,"JSESSIONID"))
    {
   $session=substr($cookies,index($cookies, "JSESSIONID=")+11,32);
   print "$session\n";
    }
}
my $req2=POST "http://customercare.scarlet.be/logon.do?language=nl", [ username=>$uid, password=>$passwd, goto=>"http://customercare.scarlet.be/logon.do;jsessionid=$session" ];
my $res2= $cookie2->request($req2);
my $req3=POST "http://customercare.scarlet.be/usage/dispatch.do";
my $res3=$cookie2->request($req3);
my $page=$res3->content;


als ik mijn goede username ingeef lukt alleen $res1 en dat sessionid eruit halen
$res2 geeft "error 302: moved temporarily"

met een foute username of paswoord lukt het nog tot $res2 en die heeft dan als content de pagina om u aan te melden met de melding dat het paswoord of username verkeerd is

de fout is dus bij het doorsturen van username en paswoord moet die eerste cookie ook nog mee doorgegeven worden en dat vind ik maar niet hoe je dat kan doen in lwp
Gebruikersavatar
Erik
Elite Poster
Elite Poster
Berichten: 1321
Lid geworden op: 15 sep 2002, 02:46
Uitgedeelde bedankjes: 2 keer
Bedankt: 18 keer

hallo,

onder Linux ben ik wel eens vaker mee perl bezig.Maar ik ben niet echt een kenner van die taal hoewel perl een zeer krachtige taal anyway als perl gebruiker zal je ongetwijfeld CPAN kennen (het netwerk waar je duizenden perl modules kan downloaden) door de source te bestuderen van die module die je gebruikt (LWP) kan je vaak inzicht krijgen in het probleem en zelf tot een oplossing komen

hier is de source van de LWP perl module

tot slot nog twee url's die wat uitleg bevatten over het gebruik van cookies in perl

http://www.infocopter.com/perl/CGI/lwpcookies.html
http://www.perl.com/pub/a/2002/08/20/pe ... tml?page=2

die urls vond ik via deze site

hopelijk ben je der iets mee :wink:
Registered Linux user #286313
Plaats reactie

Terug naar “Development”