如何生成用于网页抓取的随机IP

了解如何创建基于Python的随机IP生成器,以及代理为何是确保在线活动安全和匿名的终极解决方案。
2 分钟阅读
如何生成随机IP地址

在本指南中,您将了解到:

  • IP地址的定义及其用途
  • 是否可以通过编程生成随机IP地址
  • 如何构建随机IP生成器
  • 如何使用随机IP地址隐藏身份

现在就来一探究竟吧!

什么是IP地址?

IP地址是分配给连接到计算机网络(通过互联网协议进行通信)的设备的一串唯一数字此数字地址有助于识别在互联网或本地网络上的设备。

简而言之,IP地址对于设备识别、数据路由甚至地理定位服务,都是至关重要的。截至本文撰写之时,当前使用最广泛的版本是IPv4。IPv4地址由四组数字(称为八位字节)组成,这些数字以点分隔,如下所示:

192.168.1.1

每个八位字节都是一个数字,范围从0255,因此可以提供多达43亿个唯一地址。

 IPv6是较新的标准,使用不同的格式,提供更大的地址池。不过,本文是以介绍IPv4为主。您可以在我们的IPv4与IPv6指南中了解更多信息。

要找出您的公共IP地址,最简单的方法是访问“What is my IP address”之类的网站。另一个方法是,在Windows终端中运行以下命令,以查找您的IP:

ipconfig

非常好!现在,是时候看看您能否构建一个随机IP生成器了。

是否可以创建随机IP地址生成器?

长话短说:是的,创建随机IP地址生成器是绝对可能的!

如前所述,IP地址有定义明确的结构,其数字均在特定范围内。因此,有效随机IP的生成不仅是可能的,而且相对容易。
另一方面,您需要了解IP的分配和保留方法,以避免生成的地址只是一组毫无意义的数字。

IP地址由IANA(互联网号码分配局)管理,分配则由RIR(区域互联网注册管理机构)进行。遵守IANA标准,就可以通过编程生成有效的地址格式。

在构建IP随机生成工具时,还需要忽略某些IP范围。这是因为一些IP是被保留的,不可用于公共互联网流量。

您可以在下表中找到被保留的IPv4范围:

地址块 地址范围 说明
0.0.0.0/8 0.0.0.0 – 0.255.255.255 当前(本地,“此”)网络
10.0.0.0/8 10.0.0.0 – 10.255.255.255 用于专用网络内的本地通信
100.64.0.0/10 100.64.0.0 – 100.127.255.255 用于服务提供商和用户通信(采用电信级NAT)的共享地址空间
127.0.0.0/8 127.0.0.0 – 127.255.255.255 用于本地主机通信的环回地址
169.254.0.0/16 169.254.0.0 – 169.254.255.255 在未指定IP时(例如DHCP故障),用于链路本地地址
172.16.0.0/12 172.16.0.0 – 172.31.255.255 用于专用网络内的本地通信
192.0.0.0/24 192.0.0.0 – 192.0.0.255 IETF协议分配,DS-Lite (/29)
192.0.2.0/24 192.0.2.0 – 192.0.2.255 分配为TEST-NET-1,用于文档和示例
192.88.99.0/24 192.88.99.0 – 192.88.99.255 保留。以前用于IPv6到IPv4的中继
192.168.0.0/16 192.168.0.0 – 192.168.255.255 用于专用网络内的本地通信
198.18.0.0/15 198.18.0.0 – 198.19.255.255 用于对不同子网之间的网络通信进行基准测试
198.51.100.0/24 198.51.100.0 – 198.51.100.255 分配为TEST-NET-2,用于文档和示例
203.0.113.0/24 203.0.113.0 – 203.0.113.255 分配为TEST-NET-3,用于文档和示例
224.0.0.0/4 224.0.0.0 – 239.255.255.255 用于多播(以前的D类网络)
233.252.0.0/24 233.252.0.0 – 233.252.0.255 分配为MCAST-TEST-NET,用于文档和示例(为多播空间的一部分)
240.0.0.0/4 240.0.0.0 – 255.255.255.254 保留以供将来使用(以前的E类网络)
255.255.255.255/32 255.255.255.255 保留为“有限广播”目标地址

了解如何使用简单的Python脚本生成随机IP地址!

如何使用Python生成随机IP

跟从本分步教程学习创建Python随机IP生成器函数!

步骤1:定义生成IPv4地址的函数

IPv4地址就是由四个八位字节组成的字符串,每个八位字节均处于0255的范围内。要生成IP格式的随机数,可以使用以下逻辑:

def generate_random_ipv4():
    return f"{random.randint(0, 255)}.{random.randint(0, 255)}.{random.randint(0, 255)}.{random.randint(0, 255)}"

random中的randint()会生成0255之间的随机数。因此,generate_random_ipv4()函数会返回以下格式的字符串:

X.Y.Z.A 

其中的XYZA是处于0255范围内的数字。

不要忘记从Python标准库中导入random

import random

步骤2:为被保留的IP添加过滤逻辑

Python标准库中的ipaddress库提供了一个IPv4Address类。该类包含一个is_reserved属性,可用于检查IP地址是否被保留的地址。

首先请导入ipaddress库:

import ipaddress

接下来,使用该库创建一个逻辑,用于重复生成随机IP地址,直至生成一个未被保留的地址:

while True:
    # Generate a random IP address
    ip = f"{random.randint(0, 255)}.{random.randint(0, 255)}.{random.randint(0, 255)}.{random.randint(0, 255)}"
    
    # Check if the generated IP is within the reserved blocks
    if not ipaddress.IPv4Address(ip).is_reserved:
        return ip

好极了!您的随机IP地址生成器Python函数已准备就绪。

步骤3:测试函数

您的随机IP生成函数如下所示:

import random
import ipaddress


def generate_random_ipv4():
    while True:
        # Generate a random IP address
        ip = f"{random.randint(0, 255)}.{random.randint(0, 255)}.{random.randint(0, 255)}.{random.randint(0, 255)}"
        
        # Check if the generated IP is within the reserved blocks
        if not ipaddress.IPv4Address(ip).is_reserved:
            return ip

调用IP随机生成器函数并输出结果:

ip = generate_random_ipv4()
print(ip)

结果将如下所示:

61.18.2.4

太棒了!任务完成。

扩展:构建IPv6随机生成器

与IPv4生成器一样,创建IPv6生成器的方法如下:

import random
import ipaddress


def generate_random_ipv6():
    while True:
        # Generate a random IPv6 address
        ip = ":".join(f"{random.randint(0, 0xFFFF):04x}" for _ in range(8))
        
        # Check if the generated IP is within the reserved blocks
        if not ipaddress.IPv6Address(ip).is_reserved:
            return ip

使用随机IP保护您的身份

真正的问题是:为什么需要随机IP生成器?以下是一些可能的答案:

  • 学习:将其用作工具,以了解IP地址的构造和管理方法。
  • 测试:用于需要输入IP地址或需要使用IP执行特定任务(例如验证网络配置、防火墙或其他系统)的过程。

现在,请记住,IP地址是一个唯一的标识符。如果您可以生成一个随机IP来隐藏自己的身份,岂不妙哉?例如,在网页抓取期间,这将有助于:

  1. 防止目标网站检测到自动化请求。
  2. 为您提供一个几乎无限的IP池,以避免速率限制等反抓取措施

这将是非常棒的!然而,要简单地创建一个随机IP生成器并在计算机上直接使用,是不可能的。您可以改为通过一组代理服务器路由您的请求。

该机制有助于确保您的机器发出的每个请求看起来都是来自不同的IP地址。在我们的教程中进一步了解如何轮换IP地址

使用代理是最接近运用随机IP生成器确保在线活动安全和匿名的方法。许多顶级住宅代理提供商提供庞大的有效IP池,IP的数量通常以百万计。因此,使用代理就差不多等于可以访问随机IP。

随机IP轮换技术

现在您已经知道,相对于简单的IP生成,IP轮换具有更多好处。让我们探索一些使用随机IP的方法吧!

VPN

VPN(虚拟专用网络的简称)能将您的连接路由到不同位置的服务器,从而隐藏您的IP地址。这样,您就可以访问世界各地的随机IP集。

与代理服务器不同,VPN还会在您的设备和VPN网络之间创建安全的加密隧道。如需更深入的比较,请参阅我们的VPN与代理一文

👍 优点

  • 可访问来自世界各地的大量IP
  • 将流量加密以保护隐私
  • 适合一般浏览

👎 缺点

  • 难以与应用程序集成
  • 与代理相比,IP池规模有限
  • 来自数据中心的可检测IP

代理

代理是您的设备与目标服务器之间的中介。这种机制让您可以使用代理服务器的IP地址,而不是自己的IP地址。这样,您就可以访问“随机”IP池,进一步确保匿名性,并绕过限制。

与VPN不同,代理更容易直接集成到您的代码中,因为大多数HTTP客户端都支持代理配置。以下是通过代理使用请求实现IP轮换的示例:

import requests  
import random  

# Pool of proxies
proxies = [  
    "<PROXY_URL_1>",  
    "<PROXY_URL_2>",  
    "<PROXY_URL_3>"  
]  

# Get a random proxy config
def get_random_proxy():  
    return {"http": random.choice(proxies), "https": random.choice(proxies)}  

# Example usage   
proxy = get_random_proxy()
response = requests.get("https://example.com", proxies=proxy)

如果您不确定在哪里可以找到轮换代理,请查看我们的市场上最佳轮换代理指南。

👍 优点

  • 庞大、可靠的IP池
  • 高速连接
  • 可自定义轮换频率

👎 缺点

  • 需要技术设置

网页抓取API

网页抓取API提供了简化网页抓取过程所需的所有工具。您无需处理代理管理、用户代理、CAPTCHA、反机器人措施和重试等复杂问题,只需使用目标URL调用API即可。它会返回页面的HTML内容,或自动将数据提取为结构化的JSON格式。

Bright Data的Scraper API提供先进的反机器人管理、IP轮换、数据调度等功能,是最好的网页抓取解决方案之一,让我们来了解一下。

👍 优点

  • 一体化抓取解决方案
  • 无需任何配置即可在应用程序中访问大量IP
  • 可扩展以进行大型项目

👎 缺点

  • 迫使您依赖第三方服务

总结

在本指南中,您了解了IP地址是什么及其组成部分,以及如何使用Python构建随机IP地址生成器。虽然生成随机IP很容易,但这些IP本身并没有太大的实际用途。 您不能简单地使用它们来隐藏您的机器的身份。

这可以通过一种不同的机制来实现:代理服务器。代理服务器充当中间人,将您的请求从您的设备转发到目标服务器,并将目标的响应返回给您。 这样,目标服务器就只能看到代理的IP地址,而不会看到您的真实地址。

难题在于如何选择可靠的代理提供商。有数十家提供商提供类似服务,但并非所有提供商都是值得信赖或有效的。您需要一个具备可靠服务器、大量IP池和强大隐私政策的提供商。无需浪费时间测试所有产品,直接选择市场上的最佳选项吧,那就是Bright Data。

Bright Data管控的代理服务器堪称全球最佳,目前正在为一些财富500强企业以及超过20000家客户提供服务。其全球代理网络包括:

总体而言,这是市面上最大、最可靠的抓取导向代理网络之一。

立即创建Bright Data账户,即可免费试用这些抓取服务!

支持支付宝等多种支付方式