深色proxyscrape 徽标

How To Use Proxies To Rotate IP Addresses In Python? 5 Easy Steps In 2024

方法, 代理, 蟒蛇, 11-02-20225 分钟阅读

目录

使用代理时,您不会直接连接到目标服务器,而是直接向代理服务器发出请求,代理服务器会对请求进行评估并返回响应。代理有很多好处,比如可以隐藏真实 IP 地址,绕过过滤和审查等。 

由于从同一 IP 地址发送多个请求,有时很难执行高级网络搜刮。网络搜刮者面临着被搜刮网站屏蔽的常见问题。但他们可以使用许多技术来防止被屏蔽,例如
  • 轮换 IP 地址
  • 使用无头浏览器
  • 降低爬行率
  • 使用代理

代理旋转器可以帮助你绕过大多数反抓取措施。您还可以利用它避开目标网站实施的任何速率限制,成功提取数据。但什么是旋转代理呢?它是一种为代理池中的每个连接分配一个新 IP 地址的代理。这意味着您可以通过启动脚本并获取 1000 个不同的 IP 地址,向任意数量的网站发送 1000 个请求。

本文将帮助你了解如何在 python 中使用代理来轮换 IP 地址。

如何在 Python 中使用代理服务器旋转 IP 地址

您可以抓取免费代理列表,并将其保存在名为list_proxy.txt 的文本文件中。然后,您可以按照以下步骤在 Python 中旋转 IP 地址。

导入图书馆

您必须使用下面的命令导入 Python 的请求模块。

进口请求

如果您的环境中没有安装该模块,可以使用下面的命令进行安装。

pipinstallrequests

创建功能

您必须创建一个send_request函数,该函数需要两个参数,即会话和代理。最好使用 HTTP 代理,因为大多数免费代理都不使用 HTTPS 协议。我们将使用 try-except 块,因为大多数免费代理都被列入了屏蔽名单,无法正常工作。
def send_request(session, proxy):
   try:
       response = session.get('http://httpbin.org/ip', proxies={'http': f"http://{proxy}"})
       print(response.json())
   except:
       pass

阅读 .txt 文件

下面是代码的主要部分。您必须读取 list_proxy.txt 文件,并将其保存到名为 Proxies 的变量中,如下所示。

if__name__ =="__main__"with open('list_proxy.txt','r')as file:
       proxies =file.readlines()

使用 For 循环

要在 Python 中创建会话,必须使用请求模块。在下面的代码中,我们使用 for 循环来遍历代理。然后,我们将会话和代理传递给 send_request 函数。 

requests.Session()作为session:
  forproxyinproxies:
       send_request(session, proxy)

运行脚本

你可以运行脚本并看到如下所示的输出结果。您将看到一长串代理列表,但请记住,这些代理都不起作用。 

pythonrotateproxy.py

您的整个代码将如下所示:

import requests


def send_request(session, proxy):
   try:
       response = session.get('http://httpbin.org/ip', proxies={'http': f"http://{proxy}"})
       print(response.json())
   except:
       pass


if __name__ == "__main__":
   with open('list_proxy.txt', 'r') as file:
       proxies = file.readlines()

   with requests.Session() as session:
       for proxy in proxies:
           send_request(session, proxy)

建立代理旋转器的技巧

下面给出了在 Python 中使用旋转代理时旋转代理的一些提示。

使用可靠的免费代理服务

大多数可用的免费代理服务都很拥挤,会导致意想不到的崩溃和令人沮丧的延迟。因此,当您计划使用免费代理服务时,您必须检查它们是否符合您的搜索需求,同时不会造成任何明显的缩减。

大多数免费代理的有效期都是有限的,因此您可以用 Python 构建自己的逻辑,用工作 IP 地址轮换免费代理列表轮换器。这样,您在网络搜索时就不会受到任何干扰。 

避免使用可预测的代理 IP 地址

您必须避免使用遵循特定序列或可预测格式(如属于同一组群)的 IP 地址。因为大多数反搜索工具都能轻松检测到来自此类 IP 地址的请求。例如,你应该避免使用以下序列的旋转 IP 地址,因为它很快就会引起注意。

103.243.132.11

103.243.132.12

103.243.132.13

103.243.132.14

考虑使用高级代理服务

免费代理 IP 轮播器不安全且速度慢。因此,如果您要执行高级和大规模的网页搜刮项目,使用它们并不合适。使用优质的高级代理,您可以获得高质量的服务,并在不遇到封锁或中断的情况下,搜刮成千上万的网页。 

要使用高级代理服务,您必须支付几美元,并获得一个能满足您的数据提取需求并保证您的隐私的服务提供商。

选择精英代理

以下是互联网上的三大类代理服务器。

  • 精英代理
  • 匿名代理
  • 透明代理
在这些代理中,精英代理是最好的选择,因为它们可以防止检测和绕过限制。您可以使用精英代理只发送 REMOTE_ADDR标头,而保持其他标头为空。这样,您就可以通过这些代理获得最佳的隐私保护。
另一方面,透明代理会透露您的 IP 地址详情,并通过HTTP_VIA标头和HTTP_X_FORWARDED_FOR标头发送您的真实 IP。匿名代理不会透露你的实际 IP 地址。它要么发送代理的 IP,要么将其留空。

将 IP 轮换与用户代理轮换相结合

您可以使用 IP 轮换来轮换多个 IP 地址,从而避免被发现。不过,一些反抓取措施可以识别此类活动,阻止你采集数据。因此,除了轮换 IP 地址外,您还需要轮换用户代理,以增加成功的机会。 

常见问题:

1. How to use proxies to rotate IP addresses using python?
借助 python 库请求,您可以轻松轮转代理服务器。首先,从ProxyScrape网站下载免费代理列表;其次,创建一个函数,用于执行整个 IP 轮换过程;第三,使用读取函数读取下载的免费代理;最后,使用 for 循环运行脚本,获取会话可用的代理。
2. Is there a proxy rotator available online?
是的,网上有代理旋转器。您可以使用这些代理旋转器来完成繁重的工作,而不用手动旋转数据中心的代理。但这些都是付费服务;如果您想要一个免费的代理轮转器,那么借助 python 创建一个轮转器就是最好的选择。
3. How do proxies help in web scraping?
代理有助于掩盖您的原始 IP 地址,并使用自己的 IP 地址向目标服务器发送多个请求,以获取必要的信息。在网络刮擦中,您需要快速发送多个请求,而目标服务器会将此视为异常行为并屏蔽您的 IP 地址。代理可以帮助你避免这种情况。

结论

用 Python 创建代理轮播器非常简单。您可以生成随机代理,然后建立逻辑从网站上搜刮数据。除了 数据中心代理和 住宅代理,还有精英代理、匿名代理和透明代理。精英代理是最佳选择,因为它们很难被目标网站检测到。如果你只想在互联网上保护自己的隐私,可以使用匿名代理。最后,你可以使用透明代理,但它们成功的几率最低。本文希望提供深入的信息,并举例说明如何通过简单的编码步骤在 python 中使用代理来旋转 IP 地址。