1

perl を使用して、電子メール アドレスと名前 (利用可能な場合は管理者、登録者、技術者) を見つける必要があります。

whois の出力がさまざまな出力形式であることを確認しました。Net::ParseWhois と Net::WhoisNG を試しましたが、別のドメインのメール アドレスまたは名前を取得できません。

たとえば、次のようにします。whois google.com

perlモジュールを使用して任意のドメインから上記の詳細(電子メールと名前)を取得する方法はありますか、またはperlの任意のドメインのwhois出力を解析するにはどうすればよいですか.

4

2 に答える 2

4

を使用しますNet::Whois::Parser。これにより、既存のwhoisテキストが解析されるか、呼び出しNet::Whois::Rawて情報が取得されます。

ただし、whois登録されているすべてのドメインで情報が公開されるとは限らないことに注意してくださいgoogle.com。これは一例です。

このコードはアイデアを示しています

use strict;
use warnings;

use Net::Whois::Parser;
$Net::Whois::Parser::GET_ALL_VALUES = 1;

my $whois = parse_whois(domain => 'my.sample.url.com');

my @keys = keys %$whois;

for my $category (qw/ admin  registrant  tech/) {
  print "$category:\n";
  printf "  $_ => $whois->{$_}\n" for grep /^${category}_/, @keys;
  print "\n";
}
于 2012-08-10T11:34:33.007 に答える
4

次のように生成された概要から直接コピー/貼り付けします。

use strict;
use warnings;
use Net::WhoisNG;
my $w=new Net::WhoisNG('google.com');
if(!$w->lookUp()){
    print "Domain not Found\n";
    exit;
}
# If lookup is successful, record is parsed and ready for use

foreach my $type (qw(admin tech registrant bill)) {
    my $contact=$w->getPerson($type);
    if ($contact) {
        print "$type\n";
        my $email = $contact->getEmail();
        if ($email and $email =~ /\S/) {
            print "$email\n";
        } else {
            my $unparsed = join(' ', @{$contact->getCredentials()});
            # Use an regexp to extract e-mail from freeform text here, you can even pick ready one somewhere here on SO
            print "$unparsed\n";
        }
        print "----\n\n";
    }
}

結果:

admin
 dns-admin@google.com +1.6506234000 Fax: +1.6506188571
----

tech
 dns-admin@google.com +1.6503300100 Fax: +1.6506181499

自由形式のテキストから電子メールを抽出する演習はお任せします。

于 2012-08-10T10:35:01.747 に答える