如何使用 Httpx 代理服务器
在本指南中,我将教你如何在 Httpx 中使用代理。我会告诉你如何设置代理、使用身份验证、在不同代理之间轮换,甚至使用高级住宅代理。别担心,这比听起来容易得多。让我们开始吧!
什么是 Httpx?
Httpx 是 Python 的高级 HTTP 客户端,由流行的请求库背后的同一团队开发。不过,Httpx 还具有额外的功能:
- 支持同步和异步请求
- HTTP/2 和连接池
- 流媒体和超时控制
您可以通过 pip 进行安装:
pip install httpx
现在让我们看看如何在 Httpx 中使用代理。
为什么使用代理?
代理服务器在你的抓取器与目标网站之间充当中介。抓取器不会直接发送请求,而是通过代理发送,代理再将其转发到目标网站。
使用代理的好处
- 绕过 IP 禁止:如果您发送过多请求,网站可能会屏蔽您的真实 IP。代理可以防止这种情况。
- 地理位置控制:您可以模拟来自不同国家的用户。
- 更好的匿名性:您的实际 IP 地址永远不会暴露。
- 可扩展性:发送数以千计的请求而不会引起警告。
无代理的基本请求
下面是一个不使用代理的基本 Httpx 请求:
# scraper.py
import httpx
response = httpx.get("https://httpbin.io/ip")
print(response.text)
这将返回您的实际 IP 地址:
{
"origin": "123.45.67.89"
}
如何在 Python 中使用 Httpx 设置代理
现在,让我们通过代理发送相同的请求。
第 1 步:使用 Httpx 添加代理
要使用代理,请使用代理参数进行定义:
# scraper.py
import httpx
代理 = {
"http://": "http://216.137.184.253:80",
"https://": "http://216.137.184.253:80"
}
response = httpx.get("https://httpbin.io/ip", proxies=proxies)
print(response.text)
提示:免费代理服务器可能不稳定或已被屏蔽。请将其用于测试,而非生产。
第 2 步:使用带代理的 Httpx 客户端
您也可以在创建客户端实例时传递代理:
# scraper.py
import httpx
with httpx.Client(proxy="http://216.137.184.253:80") as 客户端:
response = client.get("https://httpbin.io/ip")
print(response.text)
如果使用同一个代理发出多个请求,使用客户端很有帮助。
步骤 3:代理验证(用户名和密码)
高级代理(如来自 Bright Data 的代理)通常需要验证。您需要在代理 URL 中包含您的用户名和密码。
格式:
http://<用户名>:<密码>@<PROXY_IP>:<港口>
例如
# scraper.py
import httpx
proxy_url = "http://myuser:[email protected]:80"
with httpx.Client(proxy=proxy_url) as 客户端:
response = client.get("https://httpbin.io/ip")
print(response.text)
请将 `myuser` 和 `mypass` 替换为你实际的 Bright Data 代理凭据。
第 4 步:使用 Httpx 旋转代理服务器
轮流使用代理服务器可帮助您避免速率限制或禁令。您可以维护一个列表,每次请求时随机选择一个。
例如
# scraper.py
import httpx
import 随机
代理列表 = [
"http://20.210.113.32:8123",
"http://47.56.110.204:8989",
"http://50.174.214.216:80"
]
random_proxy = random.choice(proxy_list)
with httpx.Client(proxy=random_proxy) as 客户端:
response = client.get("https://httpbin.io/ip")
print(response.text)
每项请求都将通过随机选择的代理进行处理。
步骤 5:利用重试逻辑处理故障
某些代理可能会失败。请添加重试逻辑,以保证您的搜索器顺利运行:
# scraper.py
import httpx
import random
import 时间
代理 = [
"http://20.210.113.32:8123",
"http://47.56.110.204:8989",
"http://50.174.214.216:80"
]
url = "https://httpbin.io/ip"
for 尝试 in range(5):
proxy = random.choice(proxies)
try:
with httpx.Client(proxy=proxy, timeout=5) as 客户端:
response = client.get(url)
print(response.text)
break
except httpx.RequestError:
print(f"Attempt {尝试 1} 代理失败 {proxy}")
time.sleep(2)
步骤 6:使用代理进行异步请求
Httpx 使用 AsyncClient 支持异步请求。这对于高速抓取很有用。
例如
# scraper_async.py
import httpx
import asyncio
async def fetch():
proxy_url = "http://216.137.184.253:80"
async with httpx.AsyncClient(proxy=proxy_url) as client:
response = await client.get("https://httpbin.io/ip")
print(response.text)
asyncio.run(fetch())
您可以通过并行启动多个 coroutines 来扩展这一功能。
第 7 步:通过 Httpx 使用明亮的数据代理
免费代理 对测试很有用,但速度慢、不安全、不可靠,而且经常被屏蔽。
对于生产型刮擦,请使用高级代理提供商,如 Bright Data 或 IPRoyal.
我为什么选择 Bright Data?
- 全球超过 1.5 亿个住宅 IP
- 按国家、城市或 ASN 进行地理定位
- 自动 IP 旋转
- 高速、低延迟性能
- 用于实时代理管理的仪表板和应用程序接口
如何通过 Httpx 使用明亮数据
注册后,您将获得代理证书。
下面介绍如何将它们插入代码:
# scraper.py
import httpx
proxy_url = "http://username:[email protected]:33335"
with httpx.Client(proxy=proxy_url) as 客户端:
response = client.get("https://httpbin.io/ip")
print(response.text)
用您实际的 Bright Data 代理凭证替换用户名和密码。
输出示例
每次运行上述脚本,都会获得不同的住宅 IP:
{
"origin": "178.62.45.183"
}
{
"origin": "191.101.54.225"
}
如果您在仪表板中进行了配置,Bright Data 会自动处理 IP 轮换。
奖励:旋转标题和用户代理
为了进一步避免被检测到,可以轮换使用 User-Agent 等标题来模拟不同的浏览器。
例如
import httpx
import 随机
user_agents = [
"Mozilla/5.0 (Windows NT 10.0; Win64; x64)",
"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7)",
"Mozilla/5.0(X11;Linux x86_64)"
]
标题 = {
"User-Agent": random.choice(user_agents)
}
代理 = "http://username:[email protected]:22225"
with httpx.Client(proxy=proxy, headers=headers) as 客户端:
response = client.get("https://httpbin.io/headers")
print(response.json())
这会模仿真实的浏览器请求,帮助你不被发现。
结论
在 Httpx 中使用代理服务器能让你的网络搜索更智能、更可靠。你现在知道了如何设置基本的代理服务器、使用登录信息、在不同的代理服务器之间切换,以及如何使用高质量的住宅代理服务器。您还学会了如何顺利捕捉和处理错误。这些技能可以帮助你避免阻塞,让你的 scraper 运行更长时间。
有了这些知识,你就可以更自由地探索网络,更安全地收集数据了。今天就开始测试代理,看看你能创建什么。有了 Httpx 和 Python,只需几行代码就能开发出功能强大的搜索工具。不断尝试,不断学习!

