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

转载 2007年10月05日 23:52:00
 
 
 
有时候会接到“打后马上就挂”的匿名电话,有时候没注意,手机上面经常出现几个“未接电话”,这时就想知道到底从哪个地方打来的,心里有个底。

一般都是通过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
卡号归属地: 湖北武汉
卡类型: 移动全球通卡
 

基于Python脚本和聚合数据实现手机号码归属地信息查询

聚合数据简介聚合数据是一个为智能手机开发者,网站站长,移动设备开发人员及图商提供原始数据API服务的综合性云数据平台。包含手机聚合,网站聚合,LBS聚合三部分,其功能类似于Google APIS和百度...
  • Lammonpeter
  • Lammonpeter
  • 2016年10月30日 13:39
  • 1176

Java项目开发心得(一):利用Java技术实现查询手机号码归属地

鉴于最近项目涉及到查询归属地的问题,今天在此做一下技术分享,如果有更好的建议,还请读者大神指出。       回归正题,关于手机号码归属地,想要查询的无非是运行商、省份、市之类的信息,那么就会涉及到H...
  • liuyaorong
  • liuyaorong
  • 2016年11月21日 08:56
  • 1076

电话号码归属地批量查询运行原理

一般情况下我们如果想要知道一个手机号码的归属地,一般最直接的方法就是直接进行拨打,或者在网页的搜索栏里面进行直接输入,我们就可以迅速的知道号码的是属于什么省什么市的。自然这些我们日常生活中遇到问题的解...
  • baidu_36775959
  • baidu_36775959
  • 2016年11月21日 14:30
  • 700

Java获取手机号码归属地

工作过程中抓取了很多手机号码,现需要获取他们的归属地。于是自己写了个工具类,这个工具类只是基本了实现该功能,没有考虑其他因素。       我知道手机号码归属地的判断是根据前7位,一开始本想获取...
  • ljz2009y
  • ljz2009y
  • 2014年09月17日 08:35
  • 13909

手机号码归属地查询代码

package com.rupeng.test; import java.io.Closeable; import java.io.IOException; public class IOUtil...
  • junjialuo
  • junjialuo
  • 2016年07月01日 00:13
  • 1560

手机号码归属地查询接口大全(七种)

淘宝网 API地址: http://tcc.taobao.com/cc/json/mobile_tel_segment.htm?tel=15850781443 参数: tel:手...
  • mr_jianrong
  • mr_jianrong
  • 2017年05月08日 15:36
  • 3749

使用C#开发基于Winform的手机号码归属地查询工具

一、需求描述 输入正确的手机号码,查询该号码的归属地和其他相关信息。 二、需求分析 1、实现手机号码归属地查询的方法 01、本地数据库存储信息,查询本地库 02、调用We...
  • u012099645
  • u012099645
  • 2013年11月03日 01:31
  • 946

android开发如何获取电话号码的归属地信息

由于本人在蓝牙项目的开发中,需要在当拨打或接听电话时弹出的通话界面中需要显示其该号码的归属地等信息,所以今天决定将这个关于如何获取手机号码归属地的使用方法总结下来,以便将来所需,利人也利己。其实这个功...
  • u013171283
  • u013171283
  • 2017年12月07日 17:31
  • 166

利用百度API查询手机号归属地

利用百度Api查询手机号归属地先到百度API官网查看其有关说明,这是其官网:http://apistore.baidu.com/ 可在此页面找到相关说明。打开网址可以看到好几个号码归属地的查询,有些...
  • wbjylk
  • wbjylk
  • 2016年03月15日 17:27
  • 13960

java学习笔记之webservice(五)--实现手机号归属地的WebService调用

》》接上一篇 使用myclipse实现手机号归属地查询的WebService调用,主要步骤: 1.一个免费的webservice网址:http://www.webxml.com.cn/zh_cn/...
  • BeauXie
  • BeauXie
  • 2016年10月20日 16:21
  • 2992
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:使用Perl查询手机号码归属地
举报原因:
原因补充:

(最多只允许输入30个字)