`
weiyinchao88
  • 浏览: 1187077 次
文章分类
社区版块
存档分类
最新评论

使用Perl查询手机号码归属地

 
阅读更多
有时候会接到“打后马上就挂”的匿名电话,有时候没注意,手机上面经常出现几个“未接电话”,这时就想知道到底从哪个地方打来的,心里有个底。

一般都是通过ip138.com查询的,查的次数多了,难免感觉太麻烦了,于是想到用Perl自己写一个程序来查询,当然原理还是远程调用ip138.com的HTTP请求。

脚本如下(querymb.pl)

#!/usr/bin/perl

use strict;
use Encode qw/encode decode/;
use LWP::UserAgent;

my ($mobile,$url,$ua,$resp,$line);

$mobile = $ARGV[0];
die "/nUsage: querymb.pl <mobile number>/n/n" if (! $mobile);

#### HTTP 请求地址
$url = "http://www.ip138.com:8080/search.asp";
$ua = LWP::UserAgent->new();

### 超时时间
$ua->timeout(10);

### 通过 POST 方法发送请求
$resp = $ua->post($url, { "mobile" => $mobile, "action" => "mobile" });

if (! $resp->is_success) {
die "ERR: " . $resp->status_line . "/n";
}

my ($geo,$type,$found_geo,$found_type);
foreach (split(//r/,$resp->content)) {

#### 由于语言环境是UTF-8,而返回的数据是 GB2312 编码,故需要转换下编码
#### 如果您的语言环境是 GB2312,请注释下面这行
$line = encode("utf-8",decode("euc-cn",$_));

#### 找到归属地关键字
if ($line =~ /卡号归属地/) {
$found_geo = 1; next;
}

#### 找到卡类型关键字
elsif ($line =~ /卡.*类.*型/) {
$found_type = 1; next;
}

### 获取归属地信息
if ($found_geo) {
$geo = $line;
Encode::_utf8_off($geo);
$geo =~ s/^/s+<TD.*>(.*)<//TD>/$1/g;
$found_geo = 0;
$geo =~ s/&nbsp;//g;
next;
}

#### 获取卡信息
if ($found_type) {
$type = $line;
Encode::_utf8_off($type);
$type =~ s/^/s+<TD.*>(.*)<//TD>/$1/g;
$type =~ s/&nbsp;//g;
last;
}
}
print "手机号码: $mobile/n";
print "卡号归属地: $geo/n";
print "卡类型: $type/n";

查询例子(偶以前的手机号码,呵呵~~~~):

# querymb.pl 13476051709
手机号码: 13476051709
卡号归属地: 湖北武汉
卡类型: 移动全球通卡
分享到:
评论

相关推荐

    在Genesis中使用Perl的配置.doc

    在Genesis中使用Perl的配置。

    神奇的perl与使用Perl编写CGI程序合集 PDF

    神奇的perl-最佳PERL入门教程与CGI编程_使用Perl的PDF版本,入门perl很好的资料

    使用perl进行查找和替换.pdf

    使用perl进行查找和替换.pdf使用perl进行查找和替换.pdf

    perl脚本perl脚本perl脚本

    perl脚本perl脚本perl脚本perl脚本

    使用perl读写文件

    对学习使用Perl操作文件时写的,在开始学习对Perl文件操作时,使用了$_,导致调试了很长时间,现在改正后做笔记到此

    使用perl进行面向对象

    使用perl进行面向对象编程。只含有包、模块以及类的内容,共两章

    Perl-5.10.0版本

    Perl-5.10.0版本,Perl-5.10.0版本,Perl-5.10.0版本,Perl-5.10.0版本,Perl-5.10.0版本,Perl-5.10.0版本,Perl-5.10.0版本,Perl-5.10.0版本,Perl-5.10.0版本,Perl-5.10.0版本,Perl-5.10.0版本,Perl-5.10.0...

    Web应用安全:使用Perl的对策进行HTML转义的方法.pptx

    使用Perl对策进行HTML转义 1 Perl 2 Perl转义对策 3 Perl对策转义XSS实例演示 目录 Perl Perl,一种功能丰富的计算机程序语言,运行在超过100种计算机平台上,适用广泛,从大型机到便携设备,从快速原型创建到大规模...

    windows Strawberry Perl 5.32最新版本

    windows Strawberry Perl 5.32最新版本 ,适合调试 perl windows Strawberry Perl 5.32最新版本 ,适合调试 perl windows Strawberry Perl 5.32最新版本 ,适合调试 perl windows Strawberry Perl 5.32最新版本 ...

    使用 Emacs 进行 Perl 编程

    使用 Emacs 进行 Perl 编程 this is for beginner.

    Inline-Perl5, 在 Perl 6程序中,使用 Perl 5代码.zip

    Inline-Perl5, 在 Perl 6程序中,使用 Perl 5代码 标题Inline::Perl5 概要 use Inline::Perl5; use DBI:from&lt;Perl5&gt;; my $dbh = DBI.connect('dbi:Pg:database=t

    使用perl替换文本中的字符

    使用perl替换文本中的字符,直接对原文件进行修改,不会产生临时文件

    CGI编程使用Perl

    CGI编程使用Perl

    使用Perl实现系统管理自动化(第二版)

    《使用perl实现系统管理自动化.第二版(中文版)》不仅提供了可用于工作的恰当工具,还给出了许多建议,帮助你解决特定问题以及安全地自动处理重复事务。  这一版的“水獭书”经过更新和扩充,涵盖了最新的操作系统、...

    strawberry-perl-5.30.1.1-64bit.zip

    根据《Mysql高性能》一书作者的推荐,使用pt-quest-digest工具能够有效分析mysql慢查询,有助理快速定位应用程序mysql性能瓶颈,并有针对性地进行查询sql优化或数据库的优化。 pt-query-digest是一个perl语言编写...

    绿色perl使用说明

    perl5教程 包含: 变量,数组,文件读写,正则表达式,控制语句,哈希表,等常用perl的使用。

    Web应用安全:使用Perl的对策进行HTML转义的方法(实验).docx

    使用Perl的对策进行HTML转义的方法 一、实验目的 了解XSS的有关知识; 了解XSS防御的有关知识; 了解Perl语言的有关知识; 掌握使用Perl语言对HTML转义,实现XSS防御。 二、实验内容 安装Perl语言环境; 搭建Apache ...

    草莓perl安装包下载

    草莓perl安装包下载,新版本 Strawberry Perl是用于MS Windows的perl环境,其中包含运行和开发perl应用程序所需的一切。 它被设计为尽可能接近UNIX系统上的perl环境。 它包括perl二进制文件,编译器(gcc)+相关...

    PERL编程完整教程

    本书循序渐进、深入浅出地介绍了Perl的主要特性及用Perl进行CGI编程的知识。全书包括24个学时内容和一个附录,共分四部分。第一部分主要讲述Perl的基本概念,第二部分重点介绍Perl的一些高级特性,第三部分介绍如何...

    perl操作Excel示例

    perl操作Excel示例perl操作Excel示例perl操作Excel示例perl操作Excel示例perl操作Excel示例perl操作Excel示例perl操作Excel示例perl操作Excel示例perl操作Excel示例....够20字了吗

Global site tag (gtag.js) - Google Analytics