requests获取服务端IP

如果使用requests库请求某个域名形式的url,响应异常了,这时我们也许需要拿到域名解析后的IP地址用于排查问题。然而requests库并没有提供类似"rsp.ip"这种形式的API来直接获取服务端IP地址,不过不用怕,办法总是有的。

1
2
3
with requests.get("https://blog.yeyuqiu.com", stream=True) as rsp:
    ip, port = rsp.raw._connection.sock.getpeername()
    print(ip, port)

注意点:

  1. stream需要设置为True,表示推迟响应内容的下载
  2. stream设为True后,Requests无法将连接释放回连接池,除非消耗了所有的数据,或者调用了Response.close。故我们应该使用with语句来发送请求,保证请求最后一定会被关闭,资源得到释放
updatedupdated2020-07-062020-07-06
加载评论