python获取Ip归属信息

如果你有一批IP地址想要获得这些IP具体的信息,比如归属国家,城市等,最好的办法当时是调用现有的api接口来获取,具体应用场景可以根据自己需要,比如我在之前就写过一篇文章,是关于我的博客被莫名***的时,就有获取过一批IP,***的时候当然是恢复业务重要,IP该封的就要封,***过后这个***者的IP信息,自己就可以分析下都来自哪里,有没有什么特征,帮助提示自己网站的安全性,今天这个脚本就是根据提供的IP获得IP归属的具体信息,脚本如下:

#!/usr/bin/env python


import requests

import csv


def getIp(file):

    iplist = []

    fi = open(file, 'r')

    for ip in fi:

        ip = ip.strip()

        iplist.append(ip)

    return iplist


def get_geolocation(ip):

    r = requests.get('https://freegeoip.net/json/' + ip)

    info = [str(r.json()['country_name']), str(r.json()['city'])]

    return {'ip':ip, 'country_name':info[0], 'city_name':info[1]}


if __name__ == '__main__':

    iplist = getIp('/root/ipfile')

    f = open('outputinfo.csv', 'a+')

    fieldnames = ['ip', 'country_name', 'city_name']

    dict_writer = csv.DictWriter(f, fieldnames=fieldnames)

    dict_writer.writerow(dict(zip(fieldnames, fieldnames)))

    for ip in iplist:

        data = get_geolocation(ip)

        dict_writer.writerow(data)

脚本解释,定义了2个函数,getIp()函数从文件中读取IP信息,返回一个列表,get_geolocation()函数负责实际得到信息,返回一个字典,接着在主函数打开一个可写的csv文件,通过循环将得到的信息写入一个CSV文件中,在写入csv 文件时用到了csv.DictWriter字典写的功能,这个还是比较实用,可以将数据结构类型为字典的数据直接写入csv文件,换句话说就是你只要把你要写的数据转换成字典的形式,就可以很方便的写入了,比如我这句dict(zip(fieldnames, fieldnames))其实就是这个功能,大家以后用到操作csv文件时,可以自己实践实践。


猜你喜欢

转载自blog.51cto.com/15060540/2651682