如何利用 Python 请求模块使用代理服务器 - 终极指南
Ștefan Răcila on Apr 20 2023

导言
网络搜刮是一种强大的工具,可以让你从网站中提取有价值的信息。不过,这也会给你正在进行搜刮的网站的服务器造成压力,这就是为什么许多网站会阻止发出过多请求的 IP 地址。为了避免这种情况,你可以使用代理来进行请求。在本文中,我将向你介绍如何使用 Python 和代理,以及如何轮换代理 IP 以避免被屏蔽。
设置
在开始之前,您需要具备以下先决条件:
✅ 已安装 Python
✅ 一定的 Python 使用经验
✅ 还安装了 Python 请求库
代理 IP 和端口列表
要安装 Python,您需要从 Python 官方网站下载 Python 安装程序: https://www.python.org/downloads/
您可以选择最新版本的 Python 3。建议使用最新版本的 Python 以获得最新功能和安全更新。
下载完成后,运行安装程序并按照提示在计算机上安装 Python。在安装过程中,确保选中将 Python 添加到系统 PATH 的选项,这样就可以从命令行运行 Python。
安装完成后,您可以打开命令提示符或终端,运行命令 `python --version` 来验证 Python 是否正确安装。这会显示已安装的 Python 版本。
打开终端并运行以下命令,即可检查是否安装了 "python-requests "软件包:
$ pip freeze
`pip` 是一个包管理器,应该与较新版本的 Python 捆绑。如果出于某种原因需要单独安装 `pip`,可以按照本指南中的说明进行。
`pip freeze` 将显示当前安装的所有 Python 软件包及其版本。检查列表中是否有 `requests` 模块。如果没有,请运行以下命令进行安装:
$ pip install requests
代理的配置
本节将介绍如何使用 `python-requests` 设置代理。要开始使用,我们需要一个正常工作的代理和要发送请求的 URL。
基本用法
import requests
proxies = {
'http': 'http://proxy_ip:proxy_port',
'https': 'http://secure_proxy_ip:proxy_port',
}
res = requests.get('https://httpbin.org/get', proxies=proxies)
如果您没有可用于测试此代码的私人代理,可以从freeproxylists.net 上的列表中查找免费的公共代理。请注意,该网站上的代理并不适用于任何生产环境,而且可能并不可靠。
代理 "字典的结构必须与示例代码中的结构完全相同。您需要为 HTTP 连接提供一个代理,为 HTTPS 连接提供一个代理。代理可能不同,也可能不一样。您可以为多个协议使用同一个代理。
另外请注意,我在两个连接的代理 URL 中都使用了 HTTP 模式。并非所有代理都有 SSL 证书。在这两种情况下,与代理的连接都将使用 HTTP。
使用此语法可对代理进行身份验证:
http://user:pass@working-proxy:port
环境变量
如果不打算使用多组代理,可以将它们导出为环境变量。
以下是在Linux shell中导出环境变量的方法
$ export HTTP_PROXY='http://proxy_ip:proxy_port'
$ export HTTP_PROXYS='http://secure_proxy_ip:proxy_port'
要检查环境,只需运行
$ 环境
以下是在PowerShell上导出环境变量的方法
>_ $Env:HTTP_PROXY='http://proxy_ip:proxy_port'
>_ $Env:HTTP_PROXYS='http://secure_proxy_ip:proxy_port'
要检查环境,只需运行
>_ Get-ChildItem -Path Env:
以下是在命令提示符中导出环境变量的方法
\> set HTTP_PROXY='http://proxy_ip:proxy_port'
\> set HTTP_PROXYS='http://secure_proxy_ip:proxy_port'
要检查环境,只需运行
\> 设置
这样,您就无需在代码中定义任何代理。只需发出请求,就能正常工作。
如何阅读回复?
您可以通过多种方式读取数据,但在大多数情况下,您会希望以纯文本或 JSON 编码字符串的形式读取数据。
纯文本:
response = requests.get(url)
text_resp = response.text
JSON,对于 JSON 格式的响应,请求包提供了一个内置方法。
response = requests.get(url)
json_resp = response.json()
代理会话
您可能还想从使用会话的网站上抓取数据。在这种情况下,您需要创建一个会话对象。首先创建一个名为 `session` 的变量,并将其分配给请求的 `Session()` 方法。现在,您必须将代理分配给会话的 `.proxies` 属性。然后使用已创建的 `session` 对象发送请求。这次只需将 URL 作为参数传递即可。
import requests
session = requests.Session()
session.proxies = {
'http': 'http://proxy_ip:proxy_port',
'https': 'http://secure_proxy_ip:proxy_port',
}
res = session.get('https://httpbin.org/get')
确保将 `proxy_ip` 和 `proxy_port` 替换为代理的实际 IP 和端口。
如何轮换代理 IP
为了避免被网站屏蔽,必须轮换使用代理 IP。一种方法是创建代理 IP 和端口列表,并在请求时随机选择代理。
下面就是一个例子:
def proxy_request(url, **kwargs):
while True:
try:
proxy = random.randint(0, len(ip_addresses) - 1)
proxies = {
'http': ip_addresses(proxy),
'https': ip_addresses(proxy)
}
response = requests.get(url, proxies=proxies, timeout=5, **kwargs)
print(f"Currently using proxy: { proxy['http'] }")
break
except:
print("Error encoutered, changing the proxy...")
return response
print(proxy_request('https://httpbin.org/get'))
聘请专业人员
虽然可以使用 Python 处理自己的代理,但这是一个耗时的过程,可能需要花费大量的时间和金钱才能获得一套好的代理。为了节省时间和金钱,您可以使用专业的搜索工具。WebScrapingAPI内置代理管理和轮换功能。我们拥有经过验证的高质量代理服务器池,这些代理服务器更加可靠,从长远来看可以为您节省时间和金钱。
我们还有一个代理模式,您可以免费试用。要获得免费的 API 密钥,您只需注册一个账户并开始试用WebScrapingAPI。这是如何使用代理模式的代码示例:
import requests
def get_params(object):
params = ''
for key,value in object.items():
if list(object).index(key) < len(object) - 1:
params += f"{key}={value}."
else:
params += f"{key}={value}"
return params
API_KEY = '<YOUR_API_KEY>'
TARGET_URL = 'http://httpbin.org/get'
PARAMETERS = {
"proxy_type":"datacenter",
"device":"desktop"
}
PROXY = {
"http": f"http://webscrapingapi.{ get_params(PARAMETERS) }:{ API_KEY }@proxy.webscrapingapi.com:80",
"https": f"https://webscrapingapi.{ get_params(PARAMETERS) }:{ API_KEY }@proxy.webscrapingapi.com:8000"
}
response = requests.get(
url=TARGET_URL,
proxies=PROXY,
verify=False
)
print(response.text)
请注意,如果您想通过 https 连接到代理模式,您的代码必须配置为不验证 SSL 证书。在这种情况下,由于您使用的是 Python Requests,因此应配置为 `verify=False`。
外卖
使用代理是避免网络搜索被拦截的有效方法。通过轮换代理 IP 和使用代理池,可以减少被拦截的机会,增加成功的几率。不过,管理自己的代理可能会很麻烦,而且可能需要花费大量时间和金钱才能获得一套好的代理。
订购高级代理服务(如 WebScrapingAPI)后,您将获得各种功能,如 IP 轮换以及在数据中心和住宅代理之间切换的能力。
我们希望这篇文章能让您更好地了解如何使用 HttpClient 代理,以及它如何帮助您满足刮擦需求。请注册我们的 14 天免费试用版,测试我们的服务并了解其所有特性和功能。
新闻和更新
订阅我们的时事通讯,了解最新的网络搜索指南和新闻。
We care about the protection of your data. Read our <l>Privacy Policy</l>.Privacy Policy.

相关文章

通过我们的深入指南,探索刮擦亚马逊产品数据的复杂性。从最佳实践和亚马逊 Scraper API 等工具到法律注意事项,了解如何应对挑战、绕过验证码并高效提取有价值的见解。




