当前位置: 首页 > 面试题库 >

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

钱锦
2023-03-14
问题内容

我正在使用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地址,因此仍然有可能由另一台服务器满足该请求,但这与您将要完成的接近。一个gethostbynameURL请求后权还是要用你的DNS缓存,除非你正在处理一个时间到现场的,像1秒,你会越来越您刚刚使用同一台服务器。

如果这还不够,您 可以
剥离线程并做lsof一会儿仍连接到远程服务器的操作。我相信您可以说服您暂时urllib2断开连接,以便成功。但是,这似乎是更多的工作,而不是值得的。



 类似资料:
  • 问题内容: 我的客户端PC通过以太网上的套接字作为服务器PC连接,如何从服务器端代码中找到该客户端的IP。 服务器在新线程中为每个客户端分配一个套接字。 当我在客户端套接字上执行操作时,我仍然会获得服务器IP地址。(是服务器在当前客户端连接上产生的套接字,并将其传递给新的线程)。 问题答案: 我相信您想改用远程地址:

  • 问题内容: 我正在使用PHP和MySQL建立数据库连接,唯一的变化是我试图使用服务器IP地址从本地计算机访问远程服务器。 我得到的错误是。用户拥有所有特权和权利。 问题答案: MySQL的大多数默认安装仅侦听本地计算机。 在服务器上查找设置,并确保它正在侦听目标IP地址。您可能还需要确保 未 打开! 另外一种方法(不太安全!)可以将其设置为侦听所有地址-本地和远程:

  • 我用插座。io和laravel echo服务器用于通过公共渠道将我的事件发送给所有客户端,但我只希望我的客户端(如我的移动应用程序和web应用程序)能够连接到laravel echo服务器,而不是其他客户端,如带有应用程序密钥和密码的推送系统,我如何才能做到这一点? 更新:最后,我必须从私人频道使用,在移动客户端中一切正常,但在web应用程序(管理面板)上,laravel echo服务器无法连接到

  • 本文向大家介绍如何在PHP中识别服务器IP地址?,包括了如何在PHP中识别服务器IP地址?的使用技巧和注意事项,需要的朋友参考一下 可以使用以下代码行标识服务器IP- 可以使用下面的代码行来标识端口- 对于5.3和更高版本的PHP,可以使用以下代码行- 当运行独立脚本(未通过Web服务器运行)时,可以使用此功能。

  • 问题内容: 如何识别PHP中的服务器IP地址? 问题答案: 像这样的服务器IP: 这是港口

  • C:\用户\跨度t 2\下载\apache-cassandra-3.11.5\bin 启动 Cassandra 服务器 C:\用户\跨度t 2\下载\apache-cassandra-3.11.5\bin 连接错误:('无法连接到任何服务器',{'127.0.0.1':错误(10061,"尝试连接到[('127.0.0.1',9042)]。最后一个错误:无法进行连接,因为目标机器主动拒绝它")})