利用python脚本实现域名解析和归属地信息查询

一、前言

由于工作中有时要域名解析和获取相关IP归属地信息,所以写了该脚本,方便自己查询使用。

二、脚本内容

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

import dns.resolver
import urllib
import chardet
import sys
import re

ip_list = []
query_domain = raw_input(‘Please input a domain: ‘)

# 先查询是否有CNAME,如果有则通过CNAME获取到A记录;如果没有直接获取A记录,然后返回到一个列表中
def get_iplist(domain):
    try:
        cn = dns.resolver.query(domain,‘CNAME‘)
        for i in cn.response.answer:
            for j in i.items:
                cname_domain = j.to_text() 
        print ‘========================================‘
        print ‘    CNAME  --->‘, cname_domain
        print ‘========================================‘
    except:
        pass
    else:
        A = dns.resolver.query(cname_domain,‘A‘)
        for i in A.response.answer:
            for j in i.items:
                try:
                    ip_list.append(j.address)
                except:
                    get_iplist(str(j))
        
    try:
        A = dns.resolver.query(domain,‘A‘)
        for i in A.response.answer:
            for j in i.items:
                ip_list.append(j.address)
    except:
        pass
    return ip_list

# 通过调用ip138.com来获取IP归属地信息
def get_ipbelong(domain_ip):
    url = ‘http://ip138.com/ips138.asp?ip=%s&action=2‘ % domain_ip
    content = urllib.urlopen(url).read()
    typeEncode = sys.getfilesystemencoding()
    infoencode = chardet.detect(content).get(‘encoding‘,‘utf-8‘)
    html = content.decode(infoencode,‘ignore‘).encode(typeEncode)
    ip = re.findall(r‘\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}‘,html)
    result = re.findall(r‘(<li>.*?</li>)‘,html)
    belong = result[0][14:-5]
    print ‘%-*s--->%*s‘ % (18,ip[0],20,belong)

if __name__ == ‘__main__‘:
    get_iplist(query_domain)
    for ip in ip_list:
        get_ipbelong(ip)

三、效果

四、相关资料

http://www.dnspython.org/examples.html

http://www.cnblogs.com/CoolRandy/p/3251733.html

时间: 2024-08-29 19:46:27

利用python脚本实现域名解析和归属地信息查询的相关文章

利用Python脚本管理Windows服务

Windows服务常用的功能就是启动服务,关闭服务,重启服务和查询服务运行状态,其中查询服务运行状态是其他三种操作的基础. 本文中提到的使用Python脚本管理Windows服务实际上是调用win32serviceutil模块,此模块来自pywin32包,此模块本身有管理服务的功能,有兴趣的可以去阅读它的部分源码. 本脚本存在的目的是为了熟练Python的语法和基本操作,Windows下有更好的命令行工具来管理服务,如sc.Powershell等.通常命令行工具的执行速度要比services.m

利用python脚本(xpath)抓取数据

有人会问re和xpath是什么关系?如果你了解js与jquery,那么这个就很好理解了. 上一篇:利用python脚本(re)抓取美空mm图片 # -*- coding:utf-8 -*- from lxml import etree html = """ <!DOCTYPE html> <html> <head lang="en"> <title>我的文档</title> <meta ht

利用python脚本自动下载ICML会议接受的文章

最近需要下载ICML会议2015年接受的最新的文章,但是到官网一看,那么多的文章,如果我一篇一篇点击下载的话,什么时候是个头呢?于是就想着用python脚本对文章的页面进行处理,得到相关文章的url,然后进行下载. 通过观察ICML会议的Accepted Papers发现,其的结构还是比较整齐的,其中我们需要的信息的代码片段如下: <div class="paper"> <p class="title">Approval Voting and

利用Python脚本获取Windows和Linux的系统版本信息

查看系统版本信息是一件家常便饭的事情,有时候需要将版本信息录入到资产管理系统中,如果每次手动的去查询这些信息再录入系统那么是一件令人呢头疼的事情,如果采用脚本去完成这件事情,那么情况就有所不同了. 在Python的世界里,获取Windows版本信息和Linux的版本信息都可以采用platform模块,但platform模块也不是万能的,有些特殊的信息(比如Windows的内部版本号)这个模块拿不到,那么只能另辟蹊径了. 在Linux系统中,可以简单的认为一切都是文件,那么就算没有现成的命令可用时

利用Python脚本备份mysql数据库

近期利用空余时间学习了python的一些基础内容,用来实践,做了一个Mysql备份的脚本,按日备份并打包压缩:python比原来的shell只能运行在linux下面更广泛一些,而且后期扩展也更好. ################################## Functions: 1)按日备份数据库,并将备份文件压缩打包: 2)成功则将备份信息写入日志,失败则发邮件告警给管理员: 3)如果已经备份成功,不再重复备份: 4)稍作改动,可用于WINDOWS备份 ###############

利用python脚本和telnet调试dubbo接口

原文地址:https://hhyo.github.io/2017/10/20/python-dubbo-telnet/ 最近在测试项目中接触到dubbo框架,由于业务逻辑复杂,前台一个业务流程在后端会依赖多个服务提供数据,而各方开发进度也不完全一致.在业务测试脚本编写完成后,希望能够在项目整体提测前,先验证部分已提供的dubbo接口的可用性.另外一方面,也能够在测试过程中更快的定位到具体的服务提供者,指派任务,减少反复沟通定位问题所耗费的时间. 先说环境:OS: macOS High Sierr

zabbix监控利用Python脚本发邮件

最近实施了zabbix监控,开源软件杠杠的,甩nagios 好几条街-- 环境:centos6.6 + Zabbix 2.4.5 + Python 2.6.6 cd /usr/local/zabbix/share/zabbix/alertscripts #进入脚本存放目录vi SendAlertEmail.sh #编辑,添加以下代码#!/bin/shecho "$3" | mail -s "$2" $1:wq! #保存退出chown zabbix.zabbix /u

利用python脚本(re)抓取美空mm图片

很久没有写博客了,这段时间一直在搞风控的东西,过段时间我把风控的内容整理整理发出来大家一起研究研究. 这两天抽空写了两个python爬虫脚本,一个使用re,一个使用xpath. 直接上代码——基于re: spider.py # -*- coding:utf-8 -*- import urllib.request import re import tool import os import http.cookiejar # 抓取MOKO_MM class Spider: # 页面初始化 def _

利用Python脚本登录Github!想怎么玩就怎么玩!

前言分析目标网站的登录方式 目标地址: https://github.com/login     登录方式做出分析: 第一,用form表单方式提交信息, 第二,有csrf_token, 第三 ,是以post请求发送用户名和密码时,需要第一次get请求的cookie 第四,登录成功以后,请求其他页面是只需要带第一次登录成功以后返回的cookie就可以. 以get发送的请求获取我们想要的token和cookie 代码: 获取这两个值就可以,进行下一步发送登录请求: 第二步post方式提交用户名密码