自定义dns解析的简单方法
hookdns的Python项目详细描述
hookdns
hookdns是一个库,它允许您修改python脚本中的名称解析,而无需修改主机文件或使用假dns。
用法
自定义dns解析由一个术语描述,其中键是主机名 以及期望的对应地址的值。
{
"hostname1": "addr1",
"hostname2": "addr2"
}
主机名和地址可以是IPv4/IPv6的域名或字符串表示形式。
使用修补程序作为装饰的示例
importrequestsfromhookdnsimporthosts@hosts({"example.org":"localhost"})defmyfunc():...r=requests.get("http://example.org")# the request is sent to your local server...
使用修补程序作为上下文管理器的示例
importrequestsfromhookdnsimporthostswithhosts({"example.org":"localhost"}):...r=requests.get("http://example.org")# the request is sent to your local server...
选项
默认情况下,会截获以下函数调用:socket.gethostbyname、socket.gethostbyname_ex和socket.getaddrinfo。
您可以将拦截限制为仅限一个受限的函数列表。
importsocketfromhookdnsimporthostswithhosts({"example.org":"localhost"},only=["gethostbyname"]):...addr=socket.gethostbyname("example.org")# returns "127.0.0.1"print("gethostname returns: %s"%addr)_,_,addr=socket.gethostbyname_ex("example.org")# returns the real ip address for example.orgprint("gethostname_ex returns: %s"%addr[0])...
gethostname returns: 127.0.0.1
gethostname_ex returns: 93.184.216.34
限制
目前它只适用于Python3.4及更高版本。