ГлавнаяtoДругоеtoДетали статьи

Как генерировать случайные IP-адреса? Объяснение принципов с примерами кода

Как генерировать случайные IP-адреса? Объяснение принципов с примерами кодаDaniel Wong
dateTime2026-02-27 11:45
dateTimeДругое

В таких сценариях, как веб-разработка, системное тестирование и моделирование данных, часто возникает необходимость генерировать случайные IP-адреса. Первая реакция многих людей: разве нельзя просто наугад написать несколько чисел? Однако на практике быстро становится ясно, что случайные IP-адреса гораздо сложнее, чем кажется: возможность сгенерировать адрес не означает, что он корректен; то, что он выглядит как IP, не гарантирует его пригодность к использованию.


Что такое IP-адрес?

На примере IPv4 IP-адрес состоит из четырёх чисел в диапазоне от 0 до 255, например:

192.168.1.1
8.8.8.8

Теоретически IPv4 содержит около 4,3 миллиарда адресов, но это не означает, что все они могут свободно использоваться.

В зависимости от назначения IP-адреса обычно делятся на три категории:

· Публичные IP: маршрутизируемые и доступные в интернете

· Частные IP: используются только внутри локальных сетей

· Зарезервированные / специальные IP: loopback, broadcast и тестовые адреса

«Случайный IP» обычно означает случайно сгенерированный публичный IP-адрес.

Самый простой способ сгенерировать случайный IP (базовая версия)

Наиболее распространённый и интуитивно понятный подход:

Случайным образом сгенерировать четыре целых числа в диапазоне 0–255

Объединить их в строку с помощью символа .

Пример (Python)

import random

def random_ip_basic():
    return ".".join(str(random.randint(0, 255)) for _ in range(4))

for _ in range(5):
    print(random_ip_basic())

С точки зрения формата сгенерированная строка полностью соответствует формату IPv4.

⚠️ В чём проблема?

Такой подход может создавать частные IP-адреса (например, 192.168.x.x), локальные loopback-адреса (127.x.x.x), немаршрутизируемые адреса или IP, которые просто не существуют либо давно заблокированы.

Фильтрация недействительных IP-адресов

1. Распространённые IPv4 диапазоны, которые следует исключить

Диапазон IPНазначение
10.0.0.0 – 10.255.255.255Частная сеть
172.16.0.0 – 172.31.255.255Частная сеть
192.168.0.0 – 192.168.255.255Частная сеть
127.0.0.0 – 127.255.255.255Loopback (обратная петля)
0.0.0.0Специальный адрес

2. Распространённые IPv6 диапазоны адресов, которые следует исключить

Префикс IPv6Назначение
::1/128Loopback-адрес
::/128Неуказанный адрес
fe80::/10Link-local адрес (только локальная сеть)
fc00::/7Уникальный локальный адрес (ULA, аналог частных IP)
ff00::/8Мультикаст-адрес
2001:db8::/32Адрес для документации / примеров (немаршрутизируемый)

Стандартный способ генерации случайных IP-адресов: использование стандартной библиотеки ipaddress

Рекомендуется использовать встроенную в Python библиотеку ipaddress для работы с IP-адресами.

Это официально поддерживаемая стандартная библиотека Python, которая предоставляет встроенные механизмы для определения различных свойств IPv4- и IPv6-адресов, что делает её значительно надёжнее, чем написание собственных правил вручную.

Пример:

IPv4:

import random
import ipaddress

def random_public_ipv4():
    while True:
        ip = ipaddress.IPv4Address(random.randint(0, 2**32 - 1))
        if ip.is_global:
            return str(ip)

for _ in range(5):
    print(random_public_ipv4())

IPv6:

import random
import ipaddress

def random_public_ipv6():
    while True:
        ip = ipaddress.IPv6Address(random.randint(0, 2**128 - 1))
        if ip.is_global:
            return str(ip)

for _ in range(5):
    print(random_public_ipv6())

Ключевой момент здесь:

is_global == True

Это означает, что IP-адрес:

Не является частным адресом, не является loopback-адресом, не относится к зарезервированным адресам и теоретически может маршрутизироваться в публичном интернете.

Практические сценарии использования: использование прокси IP 

Если ваши цели включают:

🌍 Эмуляцию разных стран или регионов
🤖 Веб-скрейпинг или сбор данных
🔐 Тестирование систем риск-контроля и антифрода
🧪 Изоляцию многопользовательских (multi-account) сред

Тогда вам нужен не IP, сгенерированный случайным алгоритмом, а:

Реальный и доступный прокси IP 

Такие IP-адреса обычно обладают следующими характеристиками:

· Они реально существуют в интернете
· Могут нормально подключаться к сети
· Имеют атрибуты страны, провайдера (ISP) и ASN
· Для систем выглядят как реальные пользовательские сети

Итоги

Генерация случайных IP-адресов — это не просто объединение нескольких чисел. По-настоящему корректный случайный IP должен соответствовать правилам распределения IP-адресов и чётко различать публичные, частные и зарезервированные адреса. В Python использование официальной стандартной библиотеки ipaddress позволяет более стандартизированно и надёжно генерировать структурно корректные публичные IP-адреса, что подходит для тестирования и моделирования данных.

IPDeep предоставляет высококачественные прокси IP-сервисы, включая:

Помимо множества других типов прокси, IPDeep предлагает более 10 миллионов высококачественных IP-ресурсов, охватывающих более 200 стран и регионов по всему миру, помогая эффективно и безопасно выполнять различные бизнес-задачи в сложных сетевых средах.

Эта статья была оригинально создана или собрана и опубликована Daniel Wong; при перепечатывании укажите источник. ( )
ad2