2010-10-09 35 views

Trả lời

53

Mặc dù đây là một phần của một chủ đề cũ, tôi sẽ nhảy vào. Tôi đã gặp phải thách thức tương tự và tôi nghĩ rằng tôi sẽ chia sẻ giải pháp. Vì vậy, về cơ bản các tập tin cấu hình sẽ cư trú biến 'tên máy chủ' của dns.resolver.Resolver bạn đang sử dụng. Do đó, nếu bạn muốn ép buộc Trình giải quyết của mình sử dụng một máy chủ định danh cụ thể, bạn có thể thực hiện như sau:

import dns.resolver 

my_resolver = dns.resolver.Resolver() 

# 8.8.8.8 is Google's public DNS server 
my_resolver.nameservers = ['8.8.8.8'] 

answer = my_resolver.query('google.com') 

Hy vọng ai đó thấy nó hữu ích.

+3

Bạn có thể vượt qua 'configure = False' để tránh đọc'/etc/resolv.conf' hoặc Windows registry. – jfs

+0

Gói 'dnspython' chỉ hoạt động trên Python 2. – Lukas

+0

Bạn có thể kiểm tra kho lưu trữ git của chúng và tự chuyển branch sang' python3'. – Lukas

0

Bạn không chỉ định trong câu hỏi của mình, nhưng giả sử bạn đang sử dụng the resolver from dnspython.org, tài liệu cho biết bạn muốn đặt thuộc tính nameservers trên đối tượng Trình phân giải.

Mặc dù có thể dễ dàng cung cấp tệp /etc/resolv.conf-style để chuyển đến số constructor's filename argument.

+0

'/etc/resolv.conf' không được sử dụng trên Windows. – jfs

1

Vâng, đúng vậy.

Nếu bạn sử dụng chức năng thuận tiện dns.resolver.query() như thế này

import dns.resolver 
r = dns.resolver.query('example.org', 'a') 

bạn có thể tái khởi resolver mặc định như vậy như một máy chủ tên cụ thể (hoặc một danh sách) được sử dụng, ví dụ:

import dns.resolver 
dns.resolver.default_resolver = dns.resolver.Resolver(configure=False) 
dns.resolver.default_resolver.nameservers = ['8.8.8.8', '2001:4860:4860::8888', 
              '8.8.4.4', '2001:4860:4860::8844' ] 
r = dns.resolver.query('example.org', 'a') 

Hoặc bạn có thể sử dụng đối tượng giải quyết riêng cho một số truy vấn:

import dns.resolver 
res = dns.resolver.Resolver(configure=False) 
res.nameservers = [ '8.8.8.8', '2001:4860:4860::8888', 
        '8.8.4.4', '2001:4860:4860::8844' ] 
r = res.query('example.org', 'a') 
Các vấn đề liên quan