加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

python – 如何在连接urllib2后确定服务器的IP地址?

发布时间:2020-12-20 12:19:25 所属栏目:Python 来源:网络整理
导读:我正在使用urllib2从服务器下载数据.但我需要确定我连接的服务器的IP地址. import urllib2STD_HEADERS = {'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8','Accept-Charset': 'ISO-8859-1,utf-8;q=0.7,*;q=0.7','Accept-Langu
我正在使用urllib2从服务器下载数据.但我需要确定我连接的服务器的IP地址.

import urllib2
STD_HEADERS = {'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8','Accept-Charset': 'ISO-8859-1,utf-8;q=0.7,*;q=0.7','Accept-Language': 'en-us,en;q=0.5','User-Agent': 'Mozilla/5.0 (X11; U; Linux x86_64;en-US;rv:1.9.2.12)     
                           Gecko/20101028 Firefox/3.6.12'}
request = urllib2.Request(url,None,STD_HEADERS)
data =  urllib2.urlopen(request)

请不要让我使用URL找到IP地址,因为这不能保证从中下载数据的服务器和IP地址查询在“HTTPRedirects”或负载均衡服务器的情况下解析为相同的IP地址

解决方法

import urllib2,socket,urlparse

# set up your request as before,then:
data = urllib2.urlopen(request)
addr = socket.gethostbyname(urlparse.urlparse(data.geturl()).hostname)

data.geturl()返回在重定向后用于实际检索资源的URL.然后使用urlparse将主机名取出并传递给socket.gethostbyname以获取IP地址.

对于给定的主机名,某些主机可能有多个IP地址,因此该请求仍有可能由不同的服务器完成,但这与您将要获得的一样接近. URL请求之后的gethostbyname无论如何都要使用你的DNS缓存,除非你正在处理1秒钟的生存时间,否则你将获得刚刚使用的同一服务器.

如果这不够,您可以在仍然连接到远程服务器的情况下分离线程并执行lsof.我相信你可以说服urllib2让连接保持打开一段时间,这样就可以了.不过,这看起来似乎比它的价值更多.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读