如何在 python 网络服务器中禁用反向 dns 查找?

Posted

技术标签:

【中文标题】如何在 python 网络服务器中禁用反向 dns 查找?【英文标题】:How to disable reverse dns lookup in python webserver? 【发布时间】:2011-10-09 08:19:19 【问题描述】:

我有一个简单的 python cgi 服务器:

import BaseHTTPServer
import CGIHTTPServer
import cgitb; cgitb.enable()  ## This line enables CGI error reporting

server = BaseHTTPServer.HTTPServer
handler = CGIHTTPServer.CGIHTTPRequestHandler
server_address = ("", 8000)
httpd = server(server_address, handler)
httpd.serve_forever()

服务器对每个请求进行反向 dns 查找,以便将日志记录到屏幕上。没有可用的 dns 服务器,因为我在本地网络设置中运行服务器。所以每次反向 dns 查找都会导致查找超时,从而延迟服务器的响应。如何禁用 dns 查找?我在 python 文档中没有找到答案。

【问题讨论】:

【参考方案1】:

您可以子类化您自己的处理程序类,它不会进行 DNS 查找。这来自http://docs.python.org/library/cgihttpserver.html#module-CGIHTTPServer,它说CGIHTTPRequestHandler 是与BaseHTTPRequestHandler 兼容的接口,BaseHTTPRequestHandler 有一个方法address_string()。

class MyHandler(CGIHTTPServer.CGIHTTPRequestHandler):

    # Disable logging DNS lookups
    def address_string(self):
        return str(self.client_address[0])

handler = MyHandler

【讨论】:

整洁。有时我发现只使用“python -m SimpleHTTPServer”快速启动 HTTP 服务器很有用。这是一个做同样事情但使用上述技巧禁用反向 DNS 查找的单线器。 python -c "import SimpleHTTPServer; SimpleHTTPServer.SimpleHTTPRequestHandler.address_string = lambda self: str(self.client_address[0]); SimpleHTTPServer.test()"

以上是关于如何在 python 网络服务器中禁用反向 dns 查找?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 autograd 反向传播中禁用某些模块的梯度更新?

【Windows Server 2019】DNS服务器的配置与管理——DNS反向解析

Linux网络——DNS反向解析主从服务器与分离解析

搭建DNS服务,正向解析和反向解析搭建DNS服务器

DNS域名解析服务(正向解析反向解析)

搭建DNS服务-----正向解析反向解析泛域名解析。