python 怎么获取本机的外网ip

Python015

python 怎么获取本机的外网ip,第1张

>>>import socket

>>>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())