与网络爬虫类似,您可以完全自主构建、管理和使用代理轮换器。为此,您需要具备编程知识(Python是理想选择,因其拥有众多有价值的框架和活跃的社区)、一些基础的计算机科学知识、一份代理列表,以及极大的耐心。
最基础的形式是一个脚本,它接收包含代理列表的变量,并为每次请求分配随机 IP。例如,你可以使用 random.sample() 函数每次完全随机地挑选一个 IP,但这意味着同一个代理可能会被连续使用多次。 在这种情况下,你可以设计成:某个 IP 地址被使用后,将其从代理列表中移除,这样直到其他所有地址都被用完之前,它都不会被再次使用。
以下是一个简短的 Python 示例:
import random
import requests
proxy_pool = ["191.5.0.79:53281", "202.166.202.29:58794", "51.210.106.217:443", "5103.240.161.109:6666"]
URL = 'https://httpbin.org/get'
while len(proxy_pool) >0:
random_proxy_list = random.sample(proxy_pool, k=1)
random_proxy = {
'http': 'http://' + random_proxy_list[0],
}
response = requests.get(URL, proxies=random_proxy)
print(response.json())
proxy_pool.remove(random_proxy_list[0])
该代码仅对代理池循环一次,且仅针对单个 URL,但足以说明其工作原理。顺便提一下,这些 IP 地址是从 https://free-proxy-list.net/ 获取的。不出所料,它们无法正常工作。
事实上,这正是自建轮换器面临的问题。你仍然需要优质的专用IP,或者至少是共享IP。既然已经到了购买代理的阶段,不妨直接寻找能自动为你轮换IP的解决方案。这样既省去了构建系统的额外时间,也避免了外包的额外开支。此外,你还能获得更多实用功能,例如:
- 快速切换特定地区IP的选项;
- 选择轮换代理类型(数据中心或住宅;常规或移动等);
- 为需要登录验证的网页抓取设置静态IP;
- 请求失败时自动使用新 IP 重试。
让我们以 WebScrapingAPI 为例,看看使用轮换代理抓取页面是多么简单。以下代码直接摘自文档,其中还有许多类似的代码片段:
import requests
url = "https://api.webscrapingapi.com/v1"
params = {
"api_key":"XXXXXX",
"url":"https://httpbin.org/get",
"proxy_type":"datacenter",
"country":"us"
}
response = requests.request("GET", url, params=params)
print(response.text)
这是使用美国数据中心代理抓取 URL 所需的全部代码。请注意,这里既没有待轮换的 IP 列表,也没有相关的参数。这是因为该 API 默认会自动切换代理。如果您希望在多个会话中使用相同的 IP,只需添加一个新参数:
import requests
url = "https://api.webscrapingapi.com/v1"
params = {
"api_key":"XXXXXX",
"url":"https://httpbin.org/get",
"proxy_type":"datacenter",
"country":"us",
"session":"100"
}
response = requests.request("GET", url, params=params)
print(response.text)
只需将“session”参数设置为相同的整数,即可在任何 URL 上使用相同的静态 IP。