Chinaunix首页 | 论坛 | 博客
  • 博客访问: 516573
  • 博文数量: 240
  • 博客积分: 791
  • 博客等级: 军士长
  • 技术积分: 1694
  • 用 户 组: 普通用户
  • 注册时间: 2011-08-23 18:21
文章分类

全部博文(240)

文章存档

2013年(21)

2012年(219)

我的朋友

分类:

2012-06-14 15:59:51

原文地址:Perl: IP归属地查询脚本 作者:haiwei_wu

IP_Guishudi.pl脚本内容如下所示,如果系统是Linux或Unix,可以根据Perl路径不同加上相应的"#!/usr/bin/perl" Shaban Header。Windows系统如果直接将内容贴入,文件因为编码格式问题可能无法运行,用notepad++将格式设置为ANSI是可以的。目前测试Perl 5.10.1版本上工作正常。
 
===========================================================================
use warnings;
use URI;
use LWP;
use Encode;
glob $line;
if ($ARGV[0] !~ /\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}/ ) {
my $filename=$ARGV[0];
open(FILE,$filename) || die "$filename not exist!";
while($line=){
 chomp($line);
 &Guishudi;
}
close(FILE);
}
else {
my $ARGN=$#ARGV;
for ($i=0;$i<=$ARGN;$i++) {
$line=$ARGV[$i];
 &Guishudi;
 }
}
sub Guishudi {
 my $url=URI->new('');
 $url->query_form('ip' => $line);
 my $browser = LWP::UserAgent->new;
 my $response = $browser->get($url);
  if($response -> is_success) {
   $value = $response -> decoded_content; $out = encode("gb2312",$value); $out =~ m/本站主数据:\s*(.*?)<\/li>/; print "$line $1\n";}
  else {
   die $response -> status_line;
   $str = $out;
   $str =~ m/本站主数据:\s*(.*?)<\/li>/;
   print "$line $1 \n";}
}
 
================================================================================
 
用法示例1:
C:\zwg>IP_Guishudi.pl 120.193.133.22 202.106.0.8 12.1.3.3 80.91.1.1
120.193.133.22 中国 移动
202.106.0.8 北京市 联通
12.1.3.3 美国
80.91.1.1 丹麦
 
用法示例2:
C:\zwg>more IP_Addr.txt
211.167.84.52
211.167.84.53
211.167.84.54
C:\Documents and Settings\zwg>IP_Guishudi.pl IP_Addr.txt
211.167.84.52 北京市 国研网
211.167.84.53 北京市 国研网
211.167.84.54 北京市 国研网
 
 
 
 
 
 
阅读(733) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~