使用特定 DNS 服务器的套接字解​​析 DNS [英] Socket resolve DNS with specific DNS server

查看:38
本文介绍了使用特定 DNS 服务器的套接字解​​析 DNS的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想使用特定的 DNS 服务器解析 DNS,例如 Google 的 8.8.8.8.我的实际 Python 代码是:

I want to resolve DNS with specific DNS server, for example Google's 8.8.8.8. My actual Python code is:

import socket

def getIP(d):
    try:
        data = socket.gethostbyname(d)
        ip = repr(data)
        return True
    except Exception:
        # fail gracefully!
        return False

可以使用 Python 吗?

Is it possible using Python?

推荐答案

您可以使用 dnspython:http://www.dnspython.org/在 ubuntu/debian 上,您可以使用:

You can use dnspython: http://www.dnspython.org/ On ubuntu/debian you can get it using:

sudo apt-get install python-dnspython

否则通过:

sudo pip install dnspython

或通过以下方式下载源安装:

Or download the source install it via:

sudo python setup.py install

你的代码应该是这样的:

Your code would be something like this:

from dns import resolver

res = resolver.Resolver()
res.nameservers = ['8.8.8.8']

answers = res.query('stackexchange.com')

for rdata in answers:
    print (rdata.address)

由于 OP 在 Mac OS X 上使用它似乎有问题,这是我为安装它所做的(仅限本地用户):

Since the OP seems to have issues using it on Mac OS X here is what I did to get it installed (for local user only):

git clone git://github.com/rthalley/dnspython.git
cd dnspython
python setup.py install --user

这篇关于使用特定 DNS 服务器的套接字解​​析 DNS的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆