Neues in der Kategorie LWP

matrix_medium_6886658738.jpg

WWW::IP - Returns your ip address with failsafe mechanism von David Farrell ermittelt die eigene öffentliche IP-Adresse.

Beispiel

#!/usr/bin/perl
use strict;
use warnings;
use WWW::IP;

my $ip = get_ip();

print "IP: $ip\n";

Ausgabe des Beispielprogramms:

IP: 79.232.98.21

Failsafe

Um Ausfallsicherheit zu erreichen, fragt WWW::IP nacheinander bis zu drei verschiedene Dienste (Webservices), für die entsprechende Perl Module zur Verfügung stehen, ab:

Der erste Treffer gewinnt, die anderen Dienste werden dann nicht mehr abgefragt.

 

WWW::curlmyip

WWW::curlmyip von David Farrell nutzt http://curlmyip.com/ um die öffentliche IP-Adresse zu ermitteln.

Beispiel

#!/usr/bin/perl
use strict;
use warnings;
use WWW::curlmyip;

my $ip = get_ip();

print "IP: $ip\n";

Ausgabe des Beispielprogramms:

IP: 79.232.98.21

 

WWW::hmaip

WWW::hmaip von David Farrell nutzt http://geoip.hidemyass.com/ip/ um die öffentliche IP-Adresse zu ermitteln.

Beispiel

#!/usr/bin/perl
use strict;
use warnings;
use WWW::hmaip;

my $ip = get_ip();

print "IP: $ip\n";

Ausgabe des Beispielprogramms:

IP: 79.232.98.21

 

WWW::ipinfo

WWW::ipinfo von David Farrell nutzt http://ipinfo.io/ um die öffentliche IP-Adresse zu ermitteln. Weiterhin können Geolocation Daten zu der IP-Adresse abgefragt werden.

Die Funktion get_ipinfo() liefert eine Referenz auf einen Hash mit der IP Adresse und den Geolocation Daten zurück.

Beispiel

#!/usr/bin/perl
use strict;
use warnings;
use WWW::ipinfo;

my $ipinfo = get_ipinfo();

my @ipinfo_keys = qw/ip hostname city region country loc org postal/;

foreach my $ipinfo_key (@ipinfo_keys) {
    $ipinfo->{$ipinfo_key} = 'unknown' unless $ipinfo->{$ipinfo_key};
    print "$ipinfo_key: $ipinfo->{$ipinfo_key}\n";
}

Ausgabe des Beispielprogramms:

ip: 79.232.98.21
hostname: p4FE86215.dip0.t-ipconnect.de
city: Leimbach
region: Hessen
country: DE
loc: 50.7500,9.7833
org: AS3320 Deutsche Telekom AG
postal: unknown

Der Funktion get_ipinfo() kann auch eine IPv4 oder IPv6 Adresse als Parameter übergeben werden, dann werden die Geolocation Daten für die angegebene IP zurückgeliefert.

 

Siehe auch:

 

Bildnachweis

phsymyst via photopin cc

 

WWW::Google::PageRank von Yuri Karaban ermittelt den Google Pagerank für Websites.

 

Pagerank ermitteln: get()

Die Methode get() liefert im skalaren Kontext den Pagerank, im Listenkontext den Pagerank und zusätzlich ein HTTP::Response Objekt zum Debuggen zurück.

 

Beispiel: get() im skalaren Kontext

#!/usr/bin/perl
use strict;
use warnings;

use WWW::Google::PageRank;

my $pr = WWW::Google::PageRank->new( host => 'toolbarqueries.google.de' );

my @urls = qw!
  http://perl-howto.de
  http://yahoo.de
  http://web.de
  !;

foreach my $url (@urls) {
    print "URL: $url ", scalar( $pr->get($url) ), "\n";
}

Das Programm liefert folgende Ausgabe:

URL: http://perl-howto.de 4
URL: http://yahoo.de 8
URL: http://web.de 7

 

Beispiel: get() im Listenkontext

#!/usr/bin/perl
use strict;
use warnings;

use WWW::Google::PageRank;

my $pr = WWW::Google::PageRank->new( host => 'toolbarqueries.google.de' )
  or die $!;

my @urls = qw!
  http://perl-howto.de
  http://yahoo.de
  http://web.de
  http://example.tld
  !;

# Debug
foreach my $url (@urls) {
    print "URL: $url ";

    my ( $pagerank, $response ) = $pr->get($url);

    if ( defined $pagerank ) {
        print "PageRank: $pagerank\n";
    }
    else {
        print "Fehler: ", $response->status_line, "\n";
        warn $response->as_string, "\n";
    }
}

Das Programm liefert folgende Ausgabe (die lange XML-Ausgabe des as_string() habe ich weggelassen):

URL: http://perl-howto.de PageRank: 4
URL: http://yahoo.de PageRank: 8
URL: http://web.de PageRank: 7
URL: http://example.tld Fehler: 403 Forbidden

 

Siehe auch:

URI::Find von Michael G Schwern vereinfacht das Extrahieren von URIs aus beliebigen Texten.

 

Beispiel URI Extraktion

Das Beispielprogramm holt eine Webseite und gibt den HTML-Quelltext an die Methode find. Die Methode find ruft bei jedem gefundenem URI die callback-Funktion callback mit zwei Parametern auf: Einem Objekt der Klasse URI::URL und dem gefundenem URI. Der Rückgabewert der callback-Funktion wird genutzt, um die gefundene URI im Text (hier in $html) zu ersetzen.

#!/usr/bin/perl
use strict;
use warnings;

use URI::Find;
use LWP::Simple;

my $url = 'http://perl-howto.de';

my $html = get $url;

# Container fuer URIs
my %uris = ();

my $finder = URI::Find->new( \&callback );

my $found = $finder->find( \$html );

# URIs absteigend sortiert ausgeben
my @uris = reverse sort keys %uris;

foreach my $uri (@uris) {
    print "$uri\n";
}
exit();

sub callback {
    my ( $uri_url, $uri ) = @_;

    # $uri_url ist ein Objekt der Klasse URI::URL

    # Doppelte URIs entfernen
    $uris{$uri}++;

    # Der Ruckgabewert ersetzt die URI in \$html
    return "--- Ersetzt durch XXXXX ---";
}

Das Programm erzeugt folgende Ausgabe:

https://www.socialtext.net/perl5/index.cgi?events_2010_froscon
http://www.zeit.de/digital/datenschutz/2010-09/twitter-oauthcalypse-authentification
http://www.yahoo.de
http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd
http://www.w3.org/1999/xhtml
http://www.thomas-fahle.de/perl-training/index.html
http://www.thomas-fahle.de/perl-programmierung/index.html
http://www.thomas-fahle.de/2010/08/kurzbericht-perlfroscon-2010-st-augustin-21-und-22-august-2010.html
http://www.thomas-fahle.de
http://www.slideshare.net/thomasfahle/dancer-5032076
http://www.slideshare.net/reneebperl/fr-os-con2010develnytprof
http://www.slideshare.net/reneebperl/fr-os-con2010bmatrainer
......

URI::Find nimmt es bei Erkennung der URI mit dem Schema sehr genau - eine etwas laxere Erkennung bietet URI::Find::Schemeless.

 

Kommandozeile: urifind

URI::Find bietet auch ein Kommandozeilen Tool, urifind, welches Dateien nach URIs durchsucht.

 $ urifind file

In bester *NIX-Manier lässt sich urifind auch als Filter verwenden:

$ wget http://perl-howto.de -O - | urifind -u -s -r
erzeugt die selbe Ausgabe wie das oben gezeigte Beispiel.

Weitere Optionen liefert urifind -h.

 

Siehe auch

Über dieses Archiv

Diese Seite enthält aktuelle Einträge der Kategorie LWP.

Linux ist die vorherige Kategorie.

Net ist die nächste Kategorie.

Aktuelle Einträge finden Sie auf der Startseite, alle Einträge in den Archiven.

Blog Roll

Powered by

Powered by Movable Type 5.2.10

Creative Commons-Lizenz

Creative Commons License
Dieses Weblog steht unter einer Creative Commons-Lizenz.