.titleBar { margin-bottom: 5px!important; }

Perl: Sipgate Login

Dieses Thema im Forum "sipgate" wurde erstellt von Fragmaster, 14 Okt. 2004.

  1. Fragmaster

    Fragmaster Neuer User

    Registriert seit:
    14 Okt. 2004
    Beiträge:
    2
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    Hallo,

    ich hab mal versucht, ein Perl-Script zu schreiben, das sich bei Sipgate einloggt, um ein Abrechnungstool für unsere WG zu implementieren ;)

    Code:
    #!/usr/bin/perl
    
    use strict;
    use diagnostics -verbose;
    
    use CGI qw/:standard/;
    use CGI::Carp qw/fatalsToBrowser/;
    use LWP;
    use LWP::Simple qw/!head/;
    use LWP::UserAgent;
    use HTTP::Request::Common;
    use HTTP::Cookies;
    
    $ENV{HTTPS_CA_FILE} = '/etc/apache/ssl.crt/ca-bundle.crt';
    $ENV{HTTPS_CA_DIR} = '/usr/lib/ssl/certs';
    
    print header, start_html(-title => 'Sipgate');
    
    my $ua = LWP::UserAgent->new();
    $ua->cookie_jar(HTTP::Cookies->new(file => 'cookies', autosave => 1, ignore_discard => 1));
    $ua->requests_redirectable;
    
    my $req = new HTTP::Request;
    my $useragent = "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.6) Gecko/20040206 Firefox/0.8";
    my $host = "secure.sipgate.de";
    my $uri = "https://secure.sipgate.de/user/index.php";
    my $content = "uname=XXXXX&okey.x=0&okey.y=0&passw=XXXXX"; 
    
    $req->uri($uri);
    $req->method("POST");
    $req->protocol("HTTP/1.1");
    $req->push_header("Accept" => "image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/x-shockwave-flash, */*");
    $req->push_header("Accept-Language" =>"en-us,en;q=0.5");
    $req->push_header("Accept-Encoding" => "gzip,deflate");
    $req->push_header("Accept-Charset" => "ISO-8859-1,utf-8;q=0.7,*;q=0.7");
    $req->push_header("Content-Type" => "application/x-www-form-urlencoded");
    $req->push_header("User-Agent" => $useragent);
    $req->push_header("Host" => $host);
    $req->push_header("Content-Length" => length($content)); 
    $req->push_header("Connection" =>  "Keep-Alive");
    $req->push_header("Cache-Control" => "no-cache");
    $req->push_header("Keep-Alive" => 500);
    $req->push_header("Referer" => 'http://www02.sipgate.de/user_interface/index.php');
    print $req->as_string, "
    
    ";
    
    my $response = $ua->request($req);
    print $response->as_string;
    
    print end_html;
    
    Allerdings werden auf irgendeinem Grund nicht alle Cookies gesetzt, die zum Einloggen notwendig sind. Der zurückgelieferte HTTP-Header sieht folgendermaßen aus:

    Code:
    HTTP/1.1 200 OK
    Cache-Control: no-cache
    Cache-Control: no-cache
    Connection: close
    Date: Thu, 14 Oct 2004 15:04:29 GMT
    Pragma: no-cache
    Pragma: no-cache
    Server: Apache/1.3.26 Ben-SSL/1.48 (Unix) Debian GNU/Linux mod_gzip/1.3.19.1a AuthMySQL/3.1 PHP/4.1.2
    Content-Language: de
    Content-Type: text/html; charset=iso-8859-1
    Content-Type: text/html; charset=windows-1250
    Expires: Thu, 14 Oct 2004 15:04:29 GMT
    Expires: Thu, 14 Oct 2004 15:04:29 GMT
    Client-Date: Thu, 14 Oct 2004 15:06:21 GMT
    Client-Peer: XXX.XXX.XXX.XXX:443
    Client-Response-Num: 1
    Client-SSL-Cert-Issuer: /C=GB/O=Comodo Limited/OU=Comodo Trust Network/OU=Terms and Conditions of use: http://www.comodo.net/repository/OU=(c)2002 Comodo Limited/CN=Comodo Class 3 Security Services CA
    Client-SSL-Cert-Subject: /C=DE/2.5.4.17=40233/ST=Nordrhein Westfalen/L=Duesseldorf/2.5.4.9=Ronsdorfer Stra\xDFe 74 Halle 15/22/O=indigo Networks GmbH/OU=NOC/OU=InstantSSL Pro/CN=secure.sipgate.de
    Client-SSL-Cipher: DES-CBC3-SHA
    Client-Transfer-Encoding: chunked
    Link: </favicon.ico>; rel="SHORTCUT ICON"
    Link: </styles/iptel_styles.css>; rel="StyleSheet"; type="text/css"
    Set-Cookie: Country_Code=de; expires=Wed, 12-Jan-05 15:04:29 GMT; path=/; domain=.sipgate.de
    Set-Cookie: Lang=de; expires=Wed, 12-Jan-05 15:04:29 GMT; path=/; domain=.sipgate.de
    Set-Cookie: DomainCode=de; expires=Wed, 12-Jan-05 15:04:29 GMT; path=/; domain=.sipgate.de
    Title: sipgate.de
    VW96.OBJECT TYPE: Artikel
    X-Meta-AUTHOR: Indigo Networks
    X-Meta-DESCRIPTION: Unter Ihrer kostenlosen sipgate-Telefonnummer sind Sie jederzeit weltweit erreichbar. Mit allen anderen sipgate-Teilnehmern telefonieren Sie immer kostenlos - egal wo auf der Welt Sie sich befinden. Grundlage für die Services von sipgate sind Internet-Telefonie und das SIP-Protokoll. Sipgate-Telefone lassen sich vollkommen problemlos hinter einem NAT bzw. Router betreiben.
    X-Meta-KEYWORDS: Internet-Telefonie sip grandstream kostenlos telefonieren Internet-Telefon Telefonnummer ENUM Click-to-Dial
    X-Meta-OWNER: 
    X-Meta-RATING: Alle
    X-Meta-ROBOTS: index,follow
    X-Meta-TITLE: sipgate.de
    X-Powered-By: PHP/4.1.2
    Die SSL-Verbindung funktioniert, einige Cookies werden gesetzt, aber die wichtigsten fehlen .... Hab ich irgendwas vergessen?

    Ich hab schon gesehen, dass es hier im Forum Beispielcode für Java und PHP gibt, aber ich würde es schon gerne mit Perl implementieren.

    Florian.
     
  2. icies

    icies Neuer User

    Registriert seit:
    10 Apr. 2005
    Beiträge:
    3
    Zustimmungen:
    0
    Punkte für Erfolge:
    0
    hallo,

    hast du mittlerweile schon eine lösung gefunden mit den cookies?! ich bastel gerade auch an einem perl script das mir guthaben, anrufen in abwesenheit etc anzeigt aber ich krieg das mit den cookies auch nicht hin. er speichert nur 2 stück ab ... wenn ich mitm firefox mich einlogge sinds aber immerhin 6 oder so. selbst wenn ich HTTP::Cookies::Mozilla nehme und dort die cookies.txt vom firefox angebe kann ich mich nich einloggen!..

    jemand sonst vielleicht noch ne idee?

    gruss
    christian