为Python脚本更改DNS服务器

3 投票
1 回答
3329 浏览
提问于 2025-04-18 08:45

我正在写一个脚本,这个脚本会在我大学的服务器上运行。
这个脚本的目的是检查一些网站,并记录它们的HTTP状态码和IP地址。一般来说,这个功能都能正常工作,但我遇到了一个很难解决的问题:
当我在大学网络外的本地机器上运行这个脚本时,一切都很顺利。
但是当我在网络内部运行脚本时,有一个特定的网站无法解析。出于某种原因,我大学的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.stackoverflow.com")
try:    
    ip = check_peer(r)
except TypeError:
    ip = socket.gethostbyname_ex(site)

1 个回答

0

Python的'requests'库 - 如何定义特定的DNS?提到这是可能的,不过这个修改是在urllib这个层面上进行的,而不是在requests这个层面。

撰写回答