- Mitglied seit
- 14 Okt 2004
- Beiträge
- 2
- Punkte für Reaktionen
- 0
- Punkte
- 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
Allerdings werden auf irgendeinem Grund nicht alle Cookies gesetzt, die zum Einloggen notwendig sind. Der zurückgelieferte HTTP-Header sieht folgendermaßen aus:
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.
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.