更改 Python 脚本的 DNS 服务器

Posted

技术标签:

【中文标题】更改 Python 脚本的 DNS 服务器【英文标题】:Changing DNS server for Python script 【发布时间】:2014-06-05 16:05:27 【问题描述】:

我正在编写一个脚本,该脚本将在我大学的服务器上运行。 该脚本的目的是检查网站并记录其 HTTP 状态代码和 IP 地址。这通常可以正常工作,但我遇到了一个我很难解决的问题: 从我在大学网络外的本地计算机上运行时,一切正常。 当我从inside 网络运行脚本时,一个特定的站点没有被解析。由于某种原因,我大学的 DNS 服务器无法进行查找。我无法控制那台机器,所以我正在寻找绕过它的方法。

是否可以更改脚本使用的 DNS 服务器,如下所示?如果没有,我应该怎么做呢?

相关代码:

import requests
import httplib
import socket

def getresponse(self,*args,**kwargs):
    response = self._old_getresponse(*args,**kwargs)
    if self.sock:
        response.peer = self.sock.getpeername()
    else:
        response.peer = None
    return response


httplib.HTTPConnection._old_getresponse = httplib.HTTPConnection.getresponse
httplib.HTTPConnection.getresponse = getresponse

def check_peer(resp):
    orig_resp = resp.raw._original_response
    if hasattr(orig_resp,'peer'):
        return getattr(orig_resp,'peer')

r = requests.get("http://www.***.com")
try:    
    ip = check_peer(r)
except TypeError:
    ip = socket.gethostbyname_ex(site)

【问题讨论】:

【参考方案1】:

Python 'requests' library - define specific DNS? 说这是可能的,尽管修补发生在 urllib 级别而不是请求级别。

【讨论】:

以上是关于更改 Python 脚本的 DNS 服务器的主要内容,如果未能解决你的问题,请参考以下文章

python3 dns轮询业务检测

使用脚本更新阿里云DNS记录

Python“请求”库 - 定义特定的 DNS?

Salt批量更新Win服务器DNS配置

python server.py下载dns上文件

Shell脚本实战——DNS主从同步脚本实例