Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/306.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在调试日志中查看Python使用哪个IP地址进行连接';什么要求?_Python_Python 3.x_Dns_Python Requests_Python Logging - Fatal编程技术网

如何在调试日志中查看Python使用哪个IP地址进行连接';什么要求?

如何在调试日志中查看Python使用哪个IP地址进行连接';什么要求?,python,python-3.x,dns,python-requests,python-logging,Python,Python 3.x,Dns,Python Requests,Python Logging,假设我正在向一个URL发送GET请求,该URL的DNS记录包含多个IP地址(DNS循环)。例如,到https://www.twitter.com。如果我们对它进行挖掘,我们会看到: ;; ANSWER SECTION: twitter.com. 60 IN A 104.244.42.193 twitter.com. 60 IN A 104.244.42.129 我已尝试使用调试日志记录,如下所述: 但是,它没有显示它使用的IP地址 此外,我还研究了这

假设我正在向一个URL发送GET请求,该URL的DNS记录包含多个IP地址(DNS循环)。例如,到
https://www.twitter.com
。如果我们对它进行
挖掘
,我们会看到:

;; ANSWER SECTION:
twitter.com.        60  IN  A   104.244.42.193
twitter.com.        60  IN  A   104.244.42.129
我已尝试使用调试日志记录,如下所述: 但是,它没有显示它使用的IP地址

此外,我还研究了这个答案:关于如何查看目标IP地址,但这不是我真正想要看到的——这一个向我展示了最终使用的IP地址

我更希望看到在库执行DNS故障切换时,在所有尝试期间尝试哪些IP地址。比如:

正在尝试连接到104.244.42.193。。。失败,尝试使用其他IP地址连接


有可能以某种方式看到吗?

在中,
urllib3
库负责这一点。那里有一个循环,用于检查以下各项的每个结果:

用于socket.getaddrinfo(主机、端口、系列、socket.SOCK\u流)中的res:
#  ....
尝试:
sock=socket.socket(af,socktype,proto)
# ...
sock.connect(sa)
回程短袜
除socket.error外,错误为e:
# ...
不幸的是,本节中没有使用日志记录。如果必须有日志记录,则必须复制函数源,添加所需的日志记录,然后monkeypatch使用
urllib3
代码来替代您的版本

唯一使用该函数的位置使用它,因此至少monkeypatching与将其分配回原始函数位置一样简单:

import urllib3.util.connection

def create_connection_with_logging(
    address,
    timeout=socket._GLOBAL_DEFAULT_TIMEOUT,
    source_address=None,
    socket_options=None,
):
    # ....

urllib3.util.connection.create_connection = create_connection_with_logging

. 生成一个元组列表以供尝试。@MartijnPieters好的,那么你的意思是不可能以某种方式登录吗?那里没有日志记录,所以你必须修补该区域。谢谢@MartijnPieters,这听起来像是一个明确的答案,我肯定会接受。你认为呢,为图书馆提出这样一份公关计划是否有价值?@Andremoniy:也许,你可以先提交一份FR问题,然后建议你为此创建一份公关计划。然后,维护人员可以就此向您提供反馈。