Perl: Sipgate Login

Fragmaster

Neuer User
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 ;)

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.
 

icies

Neuer User
Mitglied seit
10 Apr 2005
Beiträge
3
Punkte für Reaktionen
0
Punkte
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
 
Holen Sie sich 3CX - völlig kostenlos!
Verbinden Sie Ihr Team und Ihre Kunden Telefonie Livechat Videokonferenzen

Gehostet oder selbst-verwaltet. Für bis zu 10 Nutzer dauerhaft kostenlos. Keine Kreditkartendetails erforderlich. Ohne Risiko testen.

3CX
Für diese E-Mail-Adresse besteht bereits ein 3CX-Konto. Sie werden zum Kundenportal weitergeleitet, wo Sie sich anmelden oder Ihr Passwort zurücksetzen können, falls Sie dieses vergessen haben.