从ip138.com查询IP归属

本文介绍了一个使用Perl编写的脚本,该脚本可以查询并显示指定IP地址的相关地理位置信息。通过调用LWP::Simple模块从ip138.com获取数据,并解析返回的HTML内容来提取有用信息。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

#!/usr/bin/env perl

use strict;
use warnings;
use utf8;
use diagnostics;
use Carp qw(croak carp confess);

use LWP::Simple;

use Encode qw(decode encode);

my $ip = shift @ARGV;

my $program_name = $0;

my $USAGE = qq{Usage: $program_name <10.11.12.38>};

croak $USAGE unless (defined($ip) && is_ip_or_hostname($ip));

my $url = "http://ip138.com/ips138.asp?ip=$ip&action=2";

my $content = get($url);

for my $sc (split (/\n/, $content)) {
    if($sc =~ m/td align="center"><ul class="ul1"><li>(.*?)<.*/) {
        my $msg = decode("gb2312", $1);
        $msg = encode("utf8", $msg);
        printf "%-20s %s\n", $ip, $msg;
    }
}


sub is_ip_or_hostname {
    my $str = shift;
    return 0 unless defined $str;
    if ($str =~ m/^[\d\.]+$/ && $str !~ /\.$/) {
        if ($str =~ m/^[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+$/) {
            return 1;
        } else {
            return 0;
        }
    } elsif ($str =~
            m/^[a-zA-Z0-9][-a-zA-Z0-9]*(\.[a-zA-Z0-9][-a-zA-Z0-9]*)+$/) {
        return 1;
    } else {
        return 0;
    }
}

 

转载于:https://www.cnblogs.com/whymaths/archive/2013/05/10/3071623.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值