如何从Python aiohttp响应中获取IP地址且无需额外解析请求?
实现方案
你可以直接从aiohttp响应对象持有的传输层信息中提取IP,全程不需要发起额外的DNS解析请求,具体代码修改如下:
async with client_session.request(http_method, url, timeout=timeout_secs) as response: # peername返回(远端IP地址, 端口号)格式的元组 peername = response.transport.get_extra_info('peername') if peername: ip_address = peername[0] print(ip_address)
注意事项
- 只有在连接正常建立、响应正常返回的场景下
transport属性才会存在,若连接中途失败该属性可能为None,建议保留判空逻辑避免抛出异常 - 如果请求走了HTTP/HTTPS代理,该方法拿到的是代理服务器的IP,而非目标站点的真实IP
- 若开启了aiohttp连接池复用功能,拿到的IP是复用连接对应的对端IP,可能和当前请求实时DNS解析的结果有差异,属于正常现象
内容的提问来源于stack exchange,提问作者David Co
相关产品推荐
相关产品推荐

