python实现域名系统(DNS)正向查询的方法
本文实例讲述了python实现域名系统(DNS)正向查询的方法。分享给大家供大家参考,具体如下:
域名系统(DNS)是一个分布式的数据库,主要是用来把主机名换成IP地址。
DNS存在有两大理由:
(1)可以使用户方便记住名字,而不是纯粹的IP地址;
(2)允许服务器改变IP地址,但可以使用原来的域名。
系统中最基本的查询为正向查询,它会根据一个主机名来查找IP地址。例如如果你想从www.example.com上下载一个web页面,首先要寻找到IP地址。正想查询会帮你完成这个任务,它会把一个名字翻译成一个IP地址。
在python中定义了一个函数socket.getaddrinfo(),用来完成这种正向查询。它是这样定义的:
getaddrinfo(host, port[,family[, sockettype[, proto[, flags]]]])
host参数就是想寻找的域名,而其他的参数只有在你想把结果直接传递给socket.socket()或socket.connect()时才会用到。
下面是正向查询的小例子:
import sys, socket result = socket.getaddrinfo(sys.argv[1], None, 0, socket.SOCK_STREAM) counter = 0; for item in result: print "%-2d: %s" % (counter, item[4]) counter += 1
运行结果:
更多关于Python相关内容感兴趣的读者可查看本站专题:《Python函数使用技巧总结》、《Python字符串操作技巧汇总》、《Python入门与进阶经典教程》及《Python文件与目录操作技巧汇总》
希望本文所述对大家Python程序设计有所帮助。
相关推荐
-
python模拟新浪微博登陆功能(新浪微博爬虫)
1.主函数(WeiboMain.py): 复制代码 代码如下: import urllib2import cookielib import WeiboEncodeimport WeiboSearch if __name__ == '__main__': weiboLogin = WeiboLogin('×××@gmail.com', '××××')#邮箱(账号).密码 if weiboLogin.Login() == True: print "登陆成功!" 前
-
python抓取网页图片示例(python爬虫)
复制代码 代码如下: #-*- encoding: utf-8 -*-'''Created on 2014-4-24 @author: Leon Wong''' import urllib2import urllibimport reimport timeimport osimport uuid #获取二级页面urldef findUrl2(html): re1 = r'http://tuchong.com/\d+/\d+/|http://\w+(?<!photos).tuchong.co
-
Python爬虫DNS解析缓存方法实例分析
本文实例讲述了Python爬虫DNS解析缓存方法.分享给大家供大家参考,具体如下: 前言: 这是Python爬虫中DNS解析缓存模块中的核心代码,是去年的代码了,现在放出来 有兴趣的可以看一下. 一般一个域名的DNS解析时间在10~60毫秒之间,这看起来是微不足道,但是对于大型一点的爬虫而言这就不容忽视了.例如我们要爬新浪微博,同个域名下的请求有1千万(这已经不算多的了),那么耗时在10~60万秒之间,一天才86400秒.也就是说单DNS解析这一项就用了好几天时间,此时加上DNS解析缓存,效果就
-
使用Python编写简单网络爬虫抓取视频下载资源
我第一次接触爬虫这东西是在今年的5月份,当时写了一个博客搜索引擎,所用到的爬虫也挺智能的,起码比电影来了这个站用到的爬虫水平高多了! 回到用Python写爬虫的话题. Python一直是我主要使用的脚本语言,没有之一.Python的语言简洁灵活,标准库功能强大,平常可以用作计算器,文本编码转换,图片处理,批量下载,批量处理文本等.总之我很喜欢,也越用越上手,这么好用的一个工具,一般人我不告诉他... 因为其强大的字符串处理能力,以及urllib2,cookielib,re,threading这些
-
Python实现的简单dns查询功能示例
本文实例讲述了Python实现的简单dns查询功能.分享给大家供大家参考,具体如下: #!/usr/bin/python import sys,socket def print_array(*arr): array = arr for item in array: print item[4][0] print '''this script is for host resolve print "now this begin... if you want to leave,please input
-
Python写的一个简单DNS服务器实例
因为突然有个邪恶的想法,想在自己的Android平板上面搭建一个DNS服务器,因为平板上之前安装过SL4A和Python的解释器,也想继续学学Python因此,就打算用Python实现了. 在Google上面找了一下,Python实现的DNS,没找到我所希望的答案,因此就决定自己来实现了. 现在所实现的没什么高深的,只是能够对A记录查询进行简单的匹配和回复. 实现的代码如下: 复制代码 代码如下: '''Created on 2012-10-15 @author: RobinTang''' im
-
python编写爬虫小程序
起因 深夜忽然想下载一点电子书来扩充一下kindle,就想起来python学得太浅,什么"装饰器"啊."多线程"啊都没有学到. 想到廖雪峰大神的python教程很经典.很著名.就想找找有木有pdf版的下载,结果居然没找到!!CSDN有个不完整的还骗走了我一个积分!!尼玛!! 怒了,准备写个程序直接去爬廖雪峰的教程,然后再html转成电子书. 过程 过程很有趣呢,用浅薄的python知识,写python程序,去爬python教程,来学习python.想想有点小激动--
-
python实现DNS正向查询、反向查询的例子
1.DNS查询过程: 以查询 www.baidu.com为例 (1)电脑向本地域名服务器发送解析www.baidu.com的请求(2)本地域名服务器收到请求后,先查询本地的缓存,如果找到直接返回查询结果,如果没有该记录,本地域名服务器把www.baidu.com的请求发送给根域名服务器(3)根域名服务器收到请求后,把.com域的服务器IP地址返回给本地域名服务器(4)本地域名服务器连接.com服务器,向其请求解析域名www.baidu.com, .com服务器把baidu.com服务器的IP地址
-
Python中使用scapy模拟数据包实现arp攻击、dns放大攻击例子
scapy是python写的一个功能强大的交互式数据包处理程序,可用来发送.嗅探.解析和伪造网络数据包,常常被用到网络攻击和测试中. 这里就直接用python的scapy搞. 这里是arp的攻击方式,你可以做成arp攻击. 复制代码 代码如下: #!/usr/bin/python """ ARP attack """ import sys, os from scapy.all import * if os.geteuid() != 0:
-
python实现的一只从百度开始不断搜索的小爬虫
文中用到了BeautifulSoup这个库, 目的是处理html文档分析的, 因为我只是提取了title的关键字,所以可以用正则表达式代替, 还有一个库是jieba, 这个库是中文分词的作用, 再有一个库是 chardet, 用来判断字符的编码, 本想多线程的, 但是自认为被搞糊涂了,就放弃了 复制代码 代码如下: #coding:utf-8import reimport urllibimport urllib2import sysimport timeimport Queue import t
-
python实现dnspod自动更新dns解析的方法
复制代码 代码如下: def ddns():"""用当前ip更新ddns"""headers = {"Content-type": "application/x-www-form-urlencoded", "Accept": "text/json"}conn = httplib.HTTPSConnection("dnsapi.cn", timeou
-
python3简单实现微信爬虫
使用ghost.py 通过搜搜 的微信搜索来爬取微信公共账号的信息 # -*- coding: utf-8 -*- import sys reload(sys) import datetime import time sys.setdefaultencoding("utf-8") from ghost import Ghost ghost = Ghost(wait_timeout=20) url="http://weixin.sogou.com/gzh?openid=oIWs
随机推荐
- 使用angular写一个hello world
- Vue.js中数据绑定的语法教程
- 深入浅析Java 循环中标签的作用
- iOS中使用RSA加密详解
- oracle用户权限、角色管理详解
- ASP.NET MVC下拉框联动实例解析
- JavaScript中创建对象的模式汇总
- python3+PyQt5实现使用剪贴板做复制与粘帖示例
- Android 调用系统照相机拍照和录像
- 深入理解Java中没那么简单的单例模式
- 使用jQuery实现一个类似GridView的编辑,更新,取消和删除的功能
- 如何判断你的电脑是否含病毒
- c#基础之数组与接口使用示例(遍历数组 二维数组)
- PHP获取音频文件的相关信息
- Android RecyclerView添加FootView和HeadView
- 跨站脚本执行漏洞详解与防护
- javascript自定义事件功能与用法实例分析
- three.js中文文档学习之如何本地运行详解
- Android View的事件分发详解
- CentOS6.5环境下使用rsync增量同步备份文件的方法