一个python解析DNS的小函数

2012 年 3 月 13 日
 phuslu
https://gist.github.com/2023017

比较粗糙,唯一的优点就是不依赖dnslib/pydns等第三方库。

呃,我还不会在v2ex插入gist
11999 次点击
所在节点    Python
18 条回复
freestyler
2012 年 3 月 13 日
标准库不是有嘛..


getaddrinfo

gethostbyname
phuslu
2012 年 3 月 13 日
@freestyler 这个函数可以指定dnsserver, 用来防止dns劫持。
bhuztez
2012 年 3 月 13 日
推荐 dnspython http://www.dnspython.org/
phuslu
2012 年 3 月 13 日
@bhuztez 这段代码是从最新版的goagent摘出来的,好处就不用引入额外的依赖。比较适合goagent对多平台支持的需求。
其实我觉得gevent的dns解析函数更好用,推荐一下。
可以看下这个链接的评论
http://blog.gevent.org/2011/04/28/libev-and-libevent/
liruqi
2012 年 3 月 13 日
1. 拜托把几个import 写一下..
2. 有些query 仅返回 cname, 可能需要递归查询, 不知道是否有处理.
3. 我自己测试发现这个函数执行时间很长啊
4. 给一个西厢代理初始版本的代码 https://gist.github.com/2026329 也是自己实现的dns query, 大体上来讲, 还是不如第三方库稳定.
phuslu
2012 年 3 月 13 日
@liruqi
1. 恩,加上了。
2. 这个就依赖具体的host和dnsserver了,在goagent还可以用hosts机制事前指定
3. 是走的tcp,goagent不过在上层做了cache,和本身的Host机制结合很好。
4. 恩,谢谢。
phuslu
2012 年 3 月 13 日
目前的话,dns查询走tcp还是一个比较不错的办法。因为不会有dns投毒了。
虽然比udp慢些,但是一旦上层做了缓存,那么函数本身的效率就可以忽略了。
monkeylyf
2012 年 10 月 2 日
mark学习之. 之前用adns module写过一个.
Livid
2012 年 10 月 2 日
谢谢分享,把 https 改成 http 就可以显示 gist 了:

http://gist.github.com/2023017
liruqi
2012 年 10 月 2 日
样式略有错乱。
宽屏下可以考虑把页面宽度放大。
clowwindy
2012 年 10 月 2 日
谢谢分享。gethostbyname 万恶的地方就在于它是阻塞的。
iandyh
2012 年 10 月 2 日
@clowwindy 用 gevent 呢?
ayanamist
2012 年 10 月 3 日
楼主,try finally里是可以没有except的……你不想处理,就去掉那无用的except Exception吧……
发现你很喜欢写except: xxx这样的代码,哪怕实际上不需要。
ccp0101
2012 年 10 月 3 日
@liruqi 最近实现的Kernet替代,可以看看否? https://github.com/ccp0101/west-chamber-mac
lililala
2012 年 10 月 5 日
@phuslu,lz,这个怎么用呢?
liruqi
2012 年 10 月 5 日
@ccp0101 看到了。最近在做tomato路由器,过段时间再看看。你如果有设备我可以给你个教程,效果不错。
holmesabc
2012 年 10 月 5 日
@Livid 带头挖坟啊。

顺便mark个,说不定有用
asanailiulang
2013 年 6 月 20 日
试了一下,其他的DNS服务器好像不支持~~

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://v2ex.xtra.eu.org/t/29491

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX