如何在网页上分别打印IPv4和IPv6

问题描述 投票:0回答:2

此文件位于我的网站中,每次我或客户运行时,我们都会获取公共 IP 地址。由于我在我的服务器中启用了 IPv6,如果客户端有公共 IPv6,它会显示给他,否则他会看到他的 IPv4。

#!/home/path/virtualenv/folder/3.7/bin//python
print ("Content-type: text/html\n\n")
print('<title>IP | DOMAIN</title>')

import os
ip = os.environ["REMOTE_ADDR"]

ip2 = ('Your IP is: <span style=\'color:red;font-weight:bold;\'>{}</span>'.format(ip))
print(ip2)

正如我所发现的,

REMOTE_ADDR
根据客户端的情况向客户端显示 IPv6 还是 IPv4。

我想要的是分别显示这两个IP,如下所示:

如果他有 IPv4,则显示

your ipv4 is: {ipv4}

如果他有 IPv6,则显示

your ipv6 is: {ipv6}

既然所有的客户都至少有其中之一,所以应该有两个

if
条件。

我想要类似 https://whatismyipaddress.com/ 的内容,同时显示 IPv4 和 IPv6。

python ipv6 ipv4
2个回答
0
投票
from ipaddress import ip_address, IPv4Address
  
def validIPAddress(IP: str) -> str:
    try:
        return "IPv4" if type(ip_address(IP)) is IPv4Address else "IPv6"
    except ValueError:
        return "Invalid"
  
if __name__ == '__main__' :  
        
    # Enter the Ip address 
    Ip = "192.168.0.1"
    print(validIPAddress(Ip)) 
  
    Ip = "2001:0db8:85a3:0000:0000:8a2e:0370:7334"
    print(validIPAddress(Ip)) 
  
    Ip = "256.32.555.5"
    print(validIPAddress(Ip))  
  
    Ip = "250.32:555.5"
    print(validIPAddress(Ip))

给定示例的输出是:

IPv4
IPv6
Invalid
Invalid

通过这种方式,您可以使用该方法来创建要显示的字符串,并使用该方法来执行其他操作:)


0
投票

你找到解决办法了吗?我也在寻求解决这个问题。

© www.soinside.com 2019 - 2024. All rights reserved.