>>>hostname = socket.gethostname()
>>>print hostname
LuciferYang.local
>>>ip = socket.gethostbyname(hostname)
>>>print ip
10.101.8.171
>>>ipList = socket.gethostbyname_ex(hostname)
>>>print ipList
('luciferyang.local', [], ['10.101.8.171'])
理论上,不是服务器的话不用有直接外网IP到机器,办公室环境或者家庭环境都是局域网环境,外网IP都在路由器上面
爬虫时,为了避免自己的IP被封,有时候需要设置反向代理,用其他的IP去爬。那么这里说的IP到底是电脑的什么IP呢?
首先看下 localhost 、 127.0.0.1 、 192.168.x.x 。
这里使用flask开启一个服务,这样本机可以通过 localhost 、 127.0.0.1 、 192.168.x.x (我的是 192.168.1.4 )等地址的5000端口(eg. 192.168.1.4:5000 )访问服务器,而同一局域网的其它设备也可以通过 192.168.1.4:5000 访问我的服务器
这里的 localhost 一般默认指向 127.0.0.1 ,所以只需要看IP
127.0.0.1 是只能自己对自己使用的IP
192.168.x.x 则是局域网下任何设备都可以访问其他设备使用的IP(包括自己对自己)
然后,如果我访问在线网站,或者爬虫,使用的IP并不是上面那两个IP,而是我的运营商分配给我的外网IP(public ip),作为我使用的这个网络的一个身份标识,一般反爬虫封的IP,也就是这个IP了
python版本:
nodejs版本:
参考链接:
方法一可能有的获取不到ip(比如没有正确设置up名称)
方法一
import socket
#获取计算机名称
hostname=socket.gethostname()
#获取本机IP
ip=socket.gethostbyname(hostname)
print(ip)
方法二
import socket
def get_host_ip():
"""
查询本机ip地址
:return:
"""
try: s=socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
s.connect(('8.8.8.8',80))
ip=s.getsockname()[0]
finally:
s.close()
return ip
if __name__ == '__main__':
print(get_host_ip())