Python随机生成字符串的IP地址

cha*_*zhi 16 python ip-address

在Python中,如果我想以IP地址的形式生成随机字符串,该怎么办?

例如:"10.0.1.1","10.0.3.14","172.23.35.1"等.

有人可以给我一些帮助吗?

fal*_*tru 37

>>> import random
>>> import socket
>>> import struct
>>> socket.inet_ntoa(struct.pack('>I', random.randint(1, 0xffffffff)))
'197.38.59.143'
>>> socket.inet_ntoa(struct.pack('>I', random.randint(1, 0xffffffff)))
'228.237.175.64'
Run Code Online (Sandbox Code Playgroud)

注:这可能generarte像IP地址0.0.0.0,255.255.255.255.

  • 如果我想获得IP地址V6,我该怎么办?谢谢 ! (2认同)
  • @AhmedHussein `for n in range(0x01020408, 0x08040201): ... socket.inet_ntoa(...)` (2认同)

jon*_*rpe 29

如果你只想要一个字符串:

import random

ip = ".".join(map(str, (random.randint(0, 255) 
                        for _ in range(4))))
Run Code Online (Sandbox Code Playgroud)

  • 你可以拿出地图然后只做`".".join(str(randint(0,255))for _ in range(4))` (7认同)

Bra*_*mon 8

您还可以使用 Python 的ipaddress模块,该模块对于创建、操作和操作 IPv4 和 IPv6 地址和网络具有更广泛的用途:

import ipaddress
import random

MAX_IPV4 = ipaddress.IPv4Address._ALL_ONES  # 2 ** 32 - 1
MAX_IPV6 = ipaddress.IPv6Address._ALL_ONES  # 2 ** 128 - 1


def random_ipv4():
    return  ipaddress.IPv4Address._string_from_ip_int(
        random.randint(0, MAX_IPV4)
    )

def random_ipv6():
    return ipaddress.IPv6Address._string_from_ip_int(
        random.randint(0, MAX_IPV6)
    )
Run Code Online (Sandbox Code Playgroud)

例子:

>>> random.seed(444)                                                                                                                                                                                                                                         
>>> random_ipv4()                                                                                                                                                                                                                                            
'79.19.184.109'
>>> random_ipv4()                                                                                                                                                                                                                                            
'3.99.136.189'
>>> random_ipv4()                                                                                                                                                                                                                                            
'124.4.25.53'
>>> random_ipv6()                                                                                                                                                                                                                                            
'4fb7:270d:8ba9:c1ed:7124:317:e6be:81f2'
>>> random_ipv6()                                                                                                                                                                                                                                            
'fe02:b348:9465:dc65:6998:6627:1300:29c9'
>>> random_ipv6()                                                                                                                                                                                                                                            
'74a:dd88:1ff2:bfe3:1f3:81ad:debd:db88'
Run Code Online (Sandbox Code Playgroud)


San*_*bar 7

from faker import Faker  
faker = Faker()  
ip_addr = faker.ipv4()  
Run Code Online (Sandbox Code Playgroud)

参考:假-Apache-Log-Generator


cod*_*der 7

另一种以 IP 地址形式生成随机字符串的方法是:

>>> ip = '{}.{}.{}.{}'.format(*__import__('random').sample(range(0,255),4))
>>> ip
'45.162.105.102'
Run Code Online (Sandbox Code Playgroud)


zha*_*hen 5

In [123]: '.'.join('%s'%random.randint(0, 255) for i in range(4))
Out[123]: '45.204.56.200'

In [124]: '.'.join('%s'%random.randint(0, 255) for i in range(4))
Out[124]: '7.112.222.205'
Run Code Online (Sandbox Code Playgroud)