from random import getrandbits from socket import inet_ntoa from struct import pack def wan_ip(): while True: int_ip = 0x01000000 + getrandbits(32) % 0xfeffffff if (0xe0000000 <= int_ip < 0xffffffff or 0xA000000 <= int_ip < 0xb000000 or 0x7F000000 <= int_ip < 0x80000000 or 0x64400000 <= int_ip < 0x64800000 or 0xAC100000 <= int_ip < 0xac200000 or 0xC6120000 <= int_ip < 0xc6140000 or 0xA9FE0000 <= int_ip < 0xa9ff0000 or 0xC0A80000 <= int_ip < 0xc0a90000 or 0xC0000000 <= int_ip < 0xc0000100 or 0xC0000200 <= int_ip < 0xc0000300 or 0xc0586300 <= int_ip < 0xc0586400 or 0xC6336400 <= int_ip < 0xc6336500 or 0xCB007100 <= int_ip < 0xcb007200 or 0xe9fc0000 <= int_ip < 0xe9fc0100): continue return inet_ntoa(pack('>I', int_ip))