ipLocate

发布 : 2017-04-15 分类 : works 浏览 : --

iplocate 是一个为了方便在终端环境通过ip或者域名获取其物理地址而生的程序

整个程序其实只是一个简单的网页爬虫而已,数据来源为http://ipinfo.io/,本身并没有什么技术难点,本来还准备用国内的淘宝ip地址库来获取ip信息的,后来发现其实淘宝地址库中并没有太多关于ip来源具体位置的信息,就统一成了使用这个统一接口

这个程序的需求来自于曾经自己管理的服务器受到攻击,需要查明攻击者来源,判断其目的,当然首先判断攻击来源ip是否能访问,万一是肉鸡的话可能就需要联系对方网站管理员了,如果来源ip和来自同一个学校的话~~可能是学生们测试攻击手段或者同行的恶意攻击了,必要的话就需要屏蔽其ip了

安装

1
$ sudo pip install iplocate

兼容

*nix 操作系统
python 2.7
python 3.4

依赖

paramseeker

使用

1.获取本机ip及相关信息

1
$ iplocate

2.获取某ip信息

1
2
$ iplocate 210.42.122.245
$ iplocate 2601:9:7680:363:75df:f491:6f85:352f

3.获取某域名对应信息(该域名ip为本机实时获取)

1
$ iplocate www.baidu.com

4.关于iplocate

1
2
$ iplocate -v
$ iplocate -h

返回数据

可能得到下列类似结果

1
2
3
4
5
6
7
8
     59.172.176.214

LAT/LON 30.5801,114.2734
Country CN
Region Hubei
City Wuhan
Hostname 214.176.172.59.broad.wh.hb.dynamic.163data.com.cn
Network AS4134 No.31,Jin-rong Street

数据含义:
ip地址
经纬度
国家(缩写)
地区
城市
主机名
网络(AS号)

可能出现的其他值
postal(邮编)
phone(电话)

Github

IpLocate使用

这是一个内部封装的获取ip物理地址信息的类

1
2
3
4
if sys.version_info.major == 2:
from urllib2 import urlopen, URLError
else:
from urllib.request import urlopen, URLError

用于兼容py2以及py3

1
2
3
IpLocate.ip # 用于保存目标ip地址,ipv6或ipv4
IpLocate.host # 通过域名来获取与域名绑定的ip的信息
IpLocate.result # 成功获取到数据之后的json数据保存于此

ip以及host的设置可以在初始化时赋值,可以单独为其中一个值初始化,若同时初始化,默认使用ip作为目标处理

1
IpLocate().my_locate() # 获取执行程序的本机的ip数据,直接得到IpLocate.result
1
IpLocate().his_locate() # 获取指定ip或host的location信息

内部获取域名ip的方式,通过socket
(原本通过调用系统ping命令来获取结果,但是后来放弃了,有一下原因)

  1. 虽然类unix系统的ping命令差不多,但是windows下面ping参数些许不一样,比如设置timeout和ping多少次等,可以根据platform使用不同的ping参数,但是些许麻烦
  2. 通过ping返回结果获取域名ip的话,需要用正则表达式’’’’\((.+?)\)’’’’,在测试过程中发现某些情况下执行regular.find_all()会出现死递归,可能和python中执行正则的方式有关,具体原因自己也没有深入调查,所以没有用ping
  3. 之所以使用socket来获取域名的ip主要是因为方便,socket.gethostbyname(hostname)会直接返回目标域名的ip地址,且方便设置timeout

引用

1
from IpLocate import IpLocate

以上为IpLocate的核心部分,实际在终端使用程序时通过paramseeker模块辅助实现,因为paramseeker还有很多需要改进的地方,顾用比较简单的程序来测试,终端运行程序为run.py

本文作者 : hellflame
原文链接 : https://hellflame.github.io/2017/04/15/about-iplocate/
版权声明 : 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明出处!
留下足迹
点击通过issue留言