Schrift
Wiki:Tipp zum Debugging: use Data::Dumper; local $Data::Dumper::Useqq = 1; print Dumper \@var;
[thread]11183[/thread]

Pendant zu LiveHTTPheaders



<< |< 1 2 3 4 >| >> 37 Einträge, 4 Seiten
YippyYappo
 2008-01-24 18:03
#105127 #105127
User since
2008-01-24
22 Artikel
BenutzerIn
[default_avatar]
Moin.
Ich suche nach einer Möglichkeit, alle eingehenden Header-Informationen einer Seite einzulesen um ein Ergebnis zu erhalten wie bei dem Firefox-PlugIn LiveHTTPheaders.
Ich löse das momentan mit TShark als Sniffer, allerdings ist meine Version noch auf root-Login angewiesen, was nicht wirklich hilfreich ist (die Version 0.99.7 ohne root läßt sich bei mir nicht installieren...).
Was mir vorschwebt wäre eine Lösung mit Libwww, bei der während des Einlesens eben genau die Informationen (GET usw.) extrahiert werden können, die benötigt werden.
Vielleicht bin ich ein wenig kurzsichtig, aber im Libwww finde ich keine entsprechende Möglichkeit.
Sollte es mit Libwww nicht gehen, wäre ein Hinweis auf ein anderes Modul nett.

Danke.
renee
 2008-01-24 19:21
#105129 #105129
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
CPAN:HTTP::Proxy
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
YippyYappo
 2008-01-25 02:31
#105136 #105136
User since
2008-01-24
22 Artikel
BenutzerIn
[default_avatar]
Danke.
Nützt mir allerdings nur begrenzt oder ich mache wirklich einen Denkfehler.
Die Aufgabenstellung ist wie folgt:
ich lese mittels LWP::Simple und get eine Seite ein und will als Ergebnis nicht nur die üblichen Inhalte der Seite, also den HTML-Text, sondern auch die entsprechenden Informationen aus dem Header.
Wenn ich den Daemon starte

my $d = HTTP::Daemon->new(
LocalHost => "IPaufderdasScriptläuft",
LocalPort => 8080
) || die;

dann kommt da nichts an wenn ich auf der IP ein Script starte und mit LWP::Simple eine Seite hole. Begrenzt kommt was an, wenn ich mit meinem Browser etwas aufrufe:

IPaufderdasScriptläuft: /index.html

Aber das will ich ja nicht, das Programm soll als standalone die Seite und die Header holen.
Wenn ich über system auf tshark zugreife kommt reichlich mehr an, da habe ich aber wie gesagt das root-Problem und ausserdem finde ich die Lösung nicht sonderlich elegant.
Noch andere Vorschläge oder denke ich wirklich um die Ecke- manchmal ist man ja betriebsblind...
RalphFFM
 2008-01-25 08:12
#105137 #105137
User since
2006-11-16
258 Artikel
BenutzerIn
[Homepage] [default_avatar]
Hmm, als Du in Beitrag1 von "eingehenden Header-Informationen" gesprochen hast
dachte ich Du meinst serverseitig. Aus Beitrag3 bekomme ich allerdings den Eindruck,
Du meinst vielleicht doch clientseitig? Vielleicht suchst Du etwas in der Art:
Code (perl): (dl )
1
2
3
4
5
sub holeSeite {
    my ($server,$file) = ( shift =~ m|^(?:http://)?([^/]+)(/[^ ]+)|i ); # URL Deiner Seite uebergeben
    $html = qx( echo -e "GET $file HTTP/1.0\r\nHost: $server\r\n\r\n" | netcat $server 80 );
    return $html;
}

Müßtest damit dann eigentlich die gesamte Antwort inklusive Header bekommen.
Ist halt ein Vorschlag ohne LWP. Und erschlagt mich bitte nicht wegen fehlendem
Errorhandling und Nutzung eines Nicht-Perl-Tools.

Gruß, Ralph
renee
 2008-01-25 09:04
#105138 #105138
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Du kannst Dir doch alle notwendigen Header-Informationen mit LWP holen:

Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
11
#!/usr/bin/perl

use strict;
use warnings;
use Data::Dumper;
use LWP::UserAgent;

my $ua = LWP::UserAgent->new();
my $response = $ua->get( 'http://foo-magazin.de' );

print $response->header( 'Content-type' );
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
YippyYappo
 2008-01-25 16:36
#105166 #105166
User since
2008-01-24
22 Artikel
BenutzerIn
[default_avatar]
RalphFFM+2008-01-25 07:12:57--
Müßtest damit dann eigentlich die gesamte Antwort inklusive Header bekommen.
Ist halt ein Vorschlag ohne LWP. Und erschlagt mich bitte nicht wegen fehlendem
Errorhandling und Nutzung eines Nicht-Perl-Tools.

Danke, werde ich nachher mal checken.
Vielleicht habe ich mich ja wirklich falsch ausgedrückt- ein Beispiel, das natürlich mit den üblichen LWP-Methoden nicht diese Ergebnisse erzielt:
der Aufruf der URL
http://en.wikipedia.org/wiki/Image:Mash-season1-dv...
ergibt beim Firefox-Tool Ergebnisse in dieser Art:
---beginn---

http://upload.wikimedia.org/wikipedia/commons/thum...

GET /wikipedia/commons/thumb/d/d5/Dvdiconcover.svg/64px-Dvdiconcover.svg.png HTTP/1.1
Host: upload.wikimedia.org
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; de; rv:1.8.1.11) Gecko/20071127 Firefox/2.0.0.11
Accept: image/png,*/*;q=0.5
Accept-Language: de-de,de;q=0.8,en-us;q=0.5,en;q=0.3
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 300
Connection: keep-alive
Referer: http://en.wikipedia.org/wiki/Image:Mash-season1-dv...

HTTP/1.x 200 OK
Content-Type: image/png
Etag: "-2268435021997940616"
Accept-Ranges: bytes
Last-Modified: Wed, 15 Aug 2007 02:02:55 GMT
Content-Length: 6678
Date: Fri, 25 Jan 2008 13:25:11 GMT
Server: lighttpd/1.4.13
X-Cache: MISS from sq10.wikimedia.org, HIT from knsq21.knams.wikimedia.org, MISS from knsq15.knams.wikimedia.org
X-Cache-Lookup: HIT from sq10.wikimedia.org:3128, HIT from knsq21.knams.wikimedia.org:3128, MISS from knsq15.knams.wikimedia.org:80
Age: 3929
Via: 1.0 sq10.wikimedia.org:3128 (squid/2.6.STABLE18), 1.0 knsq21.knams.wikimedia.org:3128 (squid/2.6.STABLE18), 1.0 knsq15.knams.wikimedia.org:80 (squid/2.6.STABLE18)
Connection: keep-alive
---ende---
Und natürlich noch mehr Verweise.
Genau das brauche ich und dabei geht es mir im Speziellen auch um die GET-Resultate.
renee
 2008-01-25 16:47
#105167 #105167
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Also ich weiß ja nicht, was Dir be
Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#!/usr/bin/perl

use strict;
use warnings;
use Data::Dumper;
use LWP::UserAgent;

my $ua = LWP::UserAgent->new();
my $response = $ua->get( 'http://en.wikipedia.org/wiki/Image:Mash-season1-dvd-cover.jpg' );

my $obj = $response->headers;

for my $head ( $obj->header_field_names ){
    print "$head: ", $obj->header( $head ),"\n";
}
fehlt...
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
GwenDragon
 2008-01-25 17:00
#105169 #105169
User since
2005-01-17
14761 Artikel
Admin1
[Homepage]
user image
Schau dir doch mal an wie es die Perl-Skripte get, post und head machen, die mit installiert sind?

Es gibt da die Möglichkeit mit den Switches -USsed auch das anzeigen zu lassen ;)
GwenDragon
 2008-01-25 17:00
#105170 #105170
User since
2005-01-17
14761 Artikel
Admin1
[Homepage]
user image
Schau dir doch mal an wie es die Perl-Skripte get, post und head machen, die mit installiert sind?

Es gibt da die Möglichkeit mit den Switches -USsed auch das anzeigen zu lassen ;)
YippyYappo
 2008-01-25 17:14
#105171 #105171
User since
2008-01-24
22 Artikel
BenutzerIn
[default_avatar]
renee+2008-01-25 15:47:45--
Also ich weiß ja nicht, was Dir be ... fehlt...

Eine ganze Menge, um ehrlich zu sein.
Bei Deinem Beispiel kriege ich schon mal den GET-Verweis
GET /wikipedia/commons/thumb/d/d5/Dvdiconcover.svg/64px-Dvdiconcover.svg.png HTTP/1.1
nicht und wenn Du die Abfrage der URL über LiveHTTPheaders laufen läßt, dann fehlt da noch eine ganze Menge mehr.
Rein technisch gesehen ist es so, daß ich den Datenstrom mit den mannigfaltigen Informationen aus den Headern einer Seite abgreifen muß. Ich kann das zwar mit Zugriff auf die Netzwerkkarte bewerkstelligen, würde es gern aber anders machen ohne mich mich Hosts und Ports der jeweiligen Server herumschlagen zu müssen auf denen das Script dann laufen soll. Ich denke auch, daß es geht, denn ich habe vor einiger Zeit einen PHP-Code gesehen, da war das gelöst, kann aber dieses Teil nicht wiederfinden.
Insofern denke ich mir daß es, aus den bekannten ROOT-Gründen und weil nicht jeder wireshark als Standard-Installation hat, mit einer anderen Methode gehen sollte, ggfs. mit Net::Pcap auf das Wireshark ja letztendlich aufbaut.
<< |< 1 2 3 4 >| >> 37 Einträge, 4 Seiten



View all threads created 2008-01-24 18:03.