🥳加入无抓取社区领取您的免费试用,访问我们强大的网页抓取工具包!
返回博客

如何生成用于网页爬取的随机 IP 地址

Michael Lee
Michael Lee

Expert Network Defense Engineer

23-Sep-2025

介绍
生成随机IP对于网络爬虫至关重要。没有IP轮换,你的请求面临被封锁的风险。本指南探讨10种在Python中生成随机IP的实用方法。为了获得更简单和更可靠的方法,考虑使用Scrapeless,它自动化了IP轮换。


1. 使用静态IP列表

结论: 预定义的列表允许简单的随机选择。

步骤:

  1. 创建一个IP列表(ips = ["192.168.1.1", "192.168.1.2"])。
  2. 使用random.choice()进行选择。
python Copy
import random

ips = ["192.168.1.1", "192.168.1.2", "192.168.1.3"]
random_ip = random.choice(ips)
print(random_ip)

应用: 小型爬虫任务,使用受控的IP集合。


2. 使用随机IP生成

结论: 以编程方式生成IP以获得更高的变异性。

步骤:

python Copy
import random

def random_ip():
    return ".".join(str(random.randint(1, 254)) for _ in range(4))

print(random_ip())

应用: 适用于测试或临时爬虫任务,其中IP信誉并不重要。


3. 旋转免费公共代理

结论: 免费代理提供即时的随机IP。

步骤:

  1. 从公共来源获取代理列表。
  2. 随机选择一个代理进行请求。
python Copy
import requests, random

proxies = ["http://111.111.111.111:8080", "http://222.222.222.222:8080"]
proxy = random.choice(proxies)
response = requests.get("https://example.com", proxies={"http": proxy, "https": proxy})

应用: 小规模爬虫,预算有限。


4. 使用代理轮换服务

结论: 收费提供商提供可靠的随机IP。

步骤:

  1. 注册Luminati、ScraperAPI或Scrapeless等服务。
  2. 使用他们的端点和你的API密钥。
python Copy
import requests

api_url = "https://proxyprovider.com?api_key=YOUR_KEY&url=https://example.com"
response = requests.get(api_url)
print(response.text)

应用: 大规模网络爬虫,无需手动管理IP。


5. 使用Tor生成随机IP

结论: Tor提供匿名的随机IP。

步骤:

  1. 安装Tor和stem库。
  2. 通过SOCKS代理连接(127.0.0.1:9050)。
python Copy
proxies = {"http": "socks5h://127.0.0.1:9050", "https": "socks5h://127.0.0.1:9050"}
response = requests.get("https://example.com", proxies=proxies)

应用: 匿名爬虫和绕过地区限制。


6. 在Selenium中随机IP

结论: Selenium通过浏览器代理支持IP轮换。

步骤:

python Copy
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
import random

ips = ["111.111.111.111:8080", "222.222.222.222:8080"]
chrome_options = Options()
chrome_options.add_argument(f'--proxy-server={random.choice(ips)}')
driver = webdriver.Chrome(options=chrome_options)
driver.get("https://example.com")

应用: 具有多个浏览器会话的自动化任务。


7. 使用HTTPX进行异步IP轮换

结论: 异步请求支持高并发的随机IP。

python Copy
import httpx, asyncio, random

ips = ["111.111.111.111:8080", "222.222.222.222:8080"]

async def fetch(url):
    proxy = random.choice(ips)
    async with httpx.AsyncClient(proxies={"http": proxy, "https": proxy}) as client:
        r = await client.get(url)
        print(r.status_code)

asyncio.run(fetch("https://example.com"))

应用: 高速网络爬虫。


8. 在Scrapy中轮换IP

结论: Scrapy中间件可以自动分配随机IP。

步骤:

  1. 启用HttpProxyMiddleware
  2. settings.py中定义代理列表。
python Copy
DOWNLOADER_MIDDLEWARES = {'scrapy.downloadermiddlewares.httpproxy.HttpProxyMiddleware': 1}
PROXY_LIST = ['http://111.111.111.111:8080', 'http://222.222.222.222:8080']

应用: 需要大量随机IP的大型爬虫项目。


9. 使用Scrapeless进行IP管理

结论: Scrapeless自动化所有请求的随机IP分配。

好处:

  • 消除手动IP管理
  • 高效处理并发
  • 降低封锁风险

应用: 适合专业的爬虫,设置简便。


10. 使用环境变量动态IP

结论: 环境变量允许可配置的随机IP。

python Copy
import os, random
from dotenv import load_dotenv

load_dotenv()
ips = os.getenv("IPS").split(",")
random_ip = random.choice(ips)
print(random_ip)

应用: 灵活的管道设置,适用于各种爬虫任务。


比较总结

方法 易用性 成本 可扩展性 最佳用例
静态列表 简单 免费 小任务
随机生成 简单 免费 中等 测试
免费代理 简单 免费 中等 低预算抓取
付费提供商 简单 付费 大型项目
Tor 中等 免费 匿名抓取
Selenium 中等 免费/付费 中等 浏览器自动化
HTTPX 异步 中等 免费 高并发
Scrapy 中等 免费 爬虫项目
Scrapeless 非常简单 付费 专业抓取
环境变量 中等 免费 中等 可配置的管道

关键要点

  • 随机 IP 减少封锁,提高抓取可靠性。
  • Python 支持多种方法,从手动到自动化。
  • Scrapeless 提供了一个简单、可靠且可扩展的解决方案。

常见问题

Q1: 为什么要生成随机 IP?
为了防止封锁并确保一致的抓取性能。

Q2: 我可以使用免费 IP 列表吗?
可以,但稳定性有限。对于大型项目,推荐付费解决方案。

Q3: Scrapeless 需要编码吗?
需要的编码非常少;它与 Python 脚本无缝集成。

Q4: 我可以在 Selenium 中轮换 IP 吗?
可以,在浏览器选项中分配一个随机代理。

Q5: IP 应该多久轮换一次?
取决于请求数量和目标站点的限制。


推荐解决方案

为了获得无忧体验,请尝试 Scrapeless,自动生成和轮换随机 IP。


参考资料

在Scrapeless,我们仅访问公开可用的数据,并严格遵循适用的法律、法规和网站隐私政策。本博客中的内容仅供演示之用,不涉及任何非法或侵权活动。我们对使用本博客或第三方链接中的信息不做任何保证,并免除所有责任。在进行任何抓取活动之前,请咨询您的法律顾问,并审查目标网站的服务条款或获取必要的许可。

最受欢迎的文章

目录