Loading ...
Sorry, an error occurred while loading the content.

2260Re: Capture sessionID in browser from perl script

Expand Messages
  • Sudarshan Soma
    Apr 8, 2009
      2009/4/3 Thanos Chatziathanassiou <tchatzi@...>:
      > O/H Sudarshan Soma έγραψε:
      >>
      >> Thanks a lot . I have a followup query, can anyone please advice me:
      >>
      >> My application (webser) will set up sessionId in the cookie and sets
      >> redirect URL to main page(if login is successfull). In case of
      >> browser, this works fine with redirect thread reaches server with the
      >> sessionId set and request for main page.
      >>
      >> Can anyone please let me know how, it can be made to work in perl with
      >> redirect URLs.
      >>
      >> I think this is a basic query , but my intial search didnt help me.
      >> Please advice
      >>
      >
      > You really need to familiarize yourself with perldoc (or google for that
      > matter ;)
      >
      > To the matter at hand: redirects should work quite as expected. If they do
      > not, then they're probably not HTTP 3xx (see
      > http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html) and perhaps you'll
      > have to resort to some fancy regex (perldoc perlre) to go to the correct
      > URI.
      > For HTTP, see ``$ua->max_redirect'' and ``$ua->requests_redirectable'' in
      > ``perldoc LWP::UserAgent''. Also take a look in the libwww-perl cookbook
      > ``perldoc lwpcook''.
      > Someone's bound to have already done what you need.
      >>
      >> Thanks and Best Regards,
      >> Pavan
      >>
      >> My code till now is:
      >>
      >> $ua = new LWP::UserAgent;
      >> if(! $ua) {
      >> return 0;
      >> }
      >>
      >> $ua->cookie_jar(HTTP::Cookies->new);
      >> $requestString = "http://x.y.z.w?Username=abc&Password=abc";
      >> $requestObject = HTTP::Request::Common::GET $requestString;
      >> $result = $ua->request($requestObject);
      >> $resp = $result->content;
      >> print "$resp";
      >>
      >>
      >> On Wed, Apr 1, 2009 at 3:20 PM, Thanos Chatziathanassiou <tchatzi@...>
      >> wrote:
      >>
      >>>
      >>> O/H Sudarshan Soma έγραψε:
      >>>
      >>>>
      >>>> Hi All,
      >>>> I have a requirement to test webserver using perl scripts. The
      >>>> webserver creates a sessionId after successfull authentication. Hence
      >>>> for futher requests to the webserver, i need to send the sessionId
      >>>> which is set in the browser/client . Can anyone please let me know how
      >>>> can i do this.
      >>>>
      >>>> Myperl script is something like this:
      >>>>
      >>>> $requestString = "http://x.y.x.w"
      >>>> $request = HTTP::Request->new(GET => $requestString);
      >>>> $request->authorization_basic($userid, $passwd);
      >>>> $request->push_header(Cookie => "SESSIONID=?????; path=/;"); ------>
      >>>> capture session id from browser
      >>>>
      >>>>
      >>>
      >>> rather:
      >>> ---8<---
      >>> use HTTP::Cookies;
      >>> use HTTP::Request::Common;
      >>> use LWP::UserAgent;
      >>>
      >>> $ua = LWP::UserAgent->new;
      >>> $requestString = "http://x.y.x.w";
      >>> $ua->cookie_jar(HTTP::Cookies->new);
      >>> $result = $ua->request(HTTP::Request::Common::GET $requestString));
      >>> $ua->cookie_jar->extract_cookies($res);
      >>> #session id is now in the cookie jar. ``perldoc HTTP::Cookies''
      >>> #to read it
      >>> $anotherURI = "http://x.y.x.w/whatever";
      >>> $requestObject = HTTP::Request::Common::GET $anotherURI;
      >>> #automatically add the cookies (including the session-id) to this
      >>> request..
      >>> $ua->cookie_jar->add_cookie_header($requestObject);
      >>> $result = $ua->request($requestObject);
      >>>
      >>> ---8<---
      >>>
      >>>
      >>>>
      >>>> Best Regards,
      >>>> Pavan
      >>>>
      >>>> ---------------------------------------------------------------------
      >>>> To unsubscribe, e-mail: asp-unsubscribe@...
      >>>> For additional commands, e-mail: asp-help@...
      >>>>
      >>>>
      >>>>
      >>>
      >>>
      >
      >


      Thanks a lot. I got the final code now

      use warnings;

      use HTTP::Cookies;
      use HTTP::Request::Common;
      use LWP::UserAgent;

      {
      $ua = new LWP::UserAgent;
      if(! $ua) {
      print "Can not get the page :UserAgent fialed \n";
      return 0;
      }

      my $cookies=new HTTP::Cookies(file=>'./cookies.dat',autosave=>1);
      $ua->cookie_jar($cookies);
      # push does all magic to exrtact cookies and add to header for further
      reqs. useragent should be newer
      push @{ $ua->requests_redirectable }, 'POST';
      $result = $ua->request(POST "http://x.y.z.p",
      {
      Username =>'xxx',
      Password =>'xxx',
      Submit =>'Submit'
      });
      $resp = $result->content;

      $anotherURI = "http://x.y.z.p/gd";
      $requestObject = HTTP::Request::Common::GET $anotherURI;
      $result = $ua->request($requestObject);
      $resp = $result->content;

      ---------------------------------------------------------------------
      To unsubscribe, e-mail: asp-unsubscribe@...
      For additional commands, e-mail: asp-help@...
    • Show all 10 messages in this topic