Python使用淘宝API查询IP归属地功能分享

 更新时间:2014年10月23日 11:40:09   投稿:junjie  
这篇文章主要介绍了Python使用淘宝API查询IP归属地功能分享,本文可以查询到国家、运营商、区域、省份、城市、县/区等,需要的朋友可以参考下

网上有很多方法能够过去到IP地址归属地的脚本,但是我发现淘宝IP地址库的信息更详细些,所以用shell写个脚本来处理日常工作中一些IP地址分析工作。

脚本首先是从http://ip.taobao.com/的数据接口获取IP地址的JSON格式的数据信息,在使用一个python脚本来把Unicode字符转换成UTF-8编码。

Shell脚本内容:

复制代码 代码如下:

#!/bin/bash

ipInfo() {
  for i in `cat list`
  do
    TransCoding="/usr/bin/python TransCoding.py"
    JsonDate="curl -s http://ip.taobao.com/service/getIpInfo.php?ip=$i"
    country=`$JsonDate | sed 's/,/\n/g' | $TransCoding | tr -d "{}\"" | awk -F ":" 'NR==2{print $3}'
    area=`$JsonDate | sed 's/,/\n/g' | $TransCoding | tr -d "{}\"" | awk -F ":" 'NR==4{print $2}'
    region=`$JsonDate | sed 's/,/\n/g' | $TransCoding | tr -d "{}\"" | awk -F ":" 'NR==6{print $2}'
    city=`$JsonDate | sed 's/,/\n/g' | $TransCoding | tr -d "{}\"" | awk -F ":" 'NR==8{print $2}'
    county=`$JsonDate | sed 's/,/\n/g' | $TransCoding | tr -d "{}\"" | awk -F ":" 'NR==10{print $2}'
    isp=`$JsonDate | sed 's/,/\n/g' | $TransCoding | tr -d "{}\"" | awk -F ":" 'NR==12{print $2}'
    printf "%-18s\t%-8s\t%-8s\t%-8s\t%-8s\t%-8s\t%-8s\n" $i $country $isp $area $region $city $county
  done
}

printf "%-18s\t%-8s\t%-8s\t%-8s\t%-8s\t%-8s\t%-8s\n" IP地址 国家 运营商 区域 省份 城市 县/区
echo -e "\e[1;33m======================================================================\e[0m"
ipInfo;

Python脚本内容:

复制代码 代码如下:

#!/usr/bin/env python
# -*- coding: utf-8 -*-

import re
import sys

def main():
    for line in sys.stdin:
        sys.stdout.write(re.sub(r'\\u\w{4}',
            lambda e: unichr(int(e.group(0)[2:], 16)).encode('utf-8'),
            line))

if __name__ == '__main__':
    main()

将两个脚本放在一个目录下,再将需要分析的IP地址一行一个写入在list文件中,执行 shell脚本即可。

实例演示(分析最近暴力破解服务器密码的IP归属地):

复制代码 代码如下:

cat /var/log/secure | awk '/Failed/ {print $(NF-3)}' | sort -u > list
[root@MyVPS4407 ip]# ./ip.sh
IP地址                  国家    运营商  区域    省份    城市    县/区
======================================================================
114.112.69.50           中国    华南    广东省
118.244.14.49           中国    华北    北京市  北京市
122.72.120.109          中国    铁通    西北    甘肃省
1.25.202.50             中国    联通    华北    内蒙古自治区    包头市
133.242.17.113          日本
134.255.243.11          德国
145.253.72.3            德国
188.116.55.211          波兰
202.103.36.43           中国    电信    华中    湖北省  武汉市
202.97.194.167          中国    联通    东北    黑龙江省        哈尔滨市
203.122.59.88           印度
210.44.159.49           中国    教育网  华东    山东省  济南市
211.232.30.253          韩国
218.248.42.131          印度
223.5.3.200             中国    阿里巴巴        华东    浙江省  杭州市
37.55.227.103           乌克兰
38.69.193.39            美国
50.97.246.147           美国
66.161.209.154          美国
66.248.201.2            加拿大

相关文章

  • Git中需要熟记的命令小结

    Git中需要熟记的命令小结

    这篇文章总结了Git中必须记住的一些命令,,合理使用这些命令可以大大提升应用Git的效率。有需要的可以参考学习。
    2016-08-08
  • 详解如何在Linux中退出Hive命令行

    详解如何在Linux中退出Hive命令行

    在使用Hive进行数据查询和操作时,有时候我们需要退出Hive命令行界面,本文将介绍如何在Linux系统中退出Hive命令行,文中通过代码示例讲解的非常详细,具有一定的参考价值,需要的朋友可以参考下
    2024-11-11
  • Linux共享内存实现机制的详解

    Linux共享内存实现机制的详解

    这篇文章主要介绍了Linux共享内存实现机制的详解的相关资料,需要的朋友可以参考下
    2017-07-07
  • Shell动态生成数组的多种方法

    Shell动态生成数组的多种方法

    这篇文章主要介绍了Shell动态生成数组的多种方法,本文给出while循环法和for循环法,以及使用seq生成数组法,需要的朋友可以参考下
    2015-07-07
  • shell脚本连接并重启远程服务器的方法

    shell脚本连接并重启远程服务器的方法

    这篇文章主要介绍了shell脚本连接并重启远程服务器方法,需要的朋友可以参考下
    2017-03-03
  • Shell脚本实现监控kingate并自动启动

    Shell脚本实现监控kingate并自动启动

    这篇文章主要介绍了Shell脚本实现监控kingate并自动启动,本文直接给出实现代码,需要的朋友可以参考下
    2014-12-12
  • linux sed命令详解(推荐)

    linux sed命令详解(推荐)

    sed命令是一个面向字符流的非交互式编辑器,也就是说sed不允许用户与它进行交互操作。接下来通过本文给大家详细介绍linux sed命令相关知识,感兴趣的朋友一起学习吧
    2017-04-04
  • Linux查看端口占用的几种常用命令

    Linux查看端口占用的几种常用命令

    这篇文章主要介绍了Linux查端口占用的几个常用命令,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2023-09-09
  • 每天一个linux命令 chgrp命令

    每天一个linux命令 chgrp命令

    这篇文章主要为大家详细介绍了一个linux命令:chgrp命令,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-02-02
  • shell 读取变量脚本编程解析

    shell 读取变量脚本编程解析

    这篇文章主要为大家介绍了shell 读取变量脚本编程解析,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-09-09

最新评论