返回博客

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

最受欢迎的文章

目录