此文件位于我的网站中,每次我或客户运行时,我们都会获取公共 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。
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
通过这种方式,您可以使用该方法来创建要显示的字符串,并使用该方法来执行其他操作:)
你找到解决办法了吗?我也在寻求解决这个问题。