Skip to content
Intermediate / 2 min read

如何在 Windows Terminal 和 PowerShell 中使用 ProxyScrape SOCKS5 代理进行网页抓取

一份实用指南,介绍如何在 Windows 上为命令行工具(包括 curl、Windows Terminal 和 PowerShell)配置 ProxyScrape SOCKS5 代理,并包含用于网页抓取的轮换策略。

Windows SOCKS5 HTTP(S) 网页抓取

概述

本教程向你展示如何在 Windows 上为命令行工具(包括 Windows Terminal、PowerShell 和 curl)配置 ProxyScrape SOCKS5 代理。SOCKS5 是一种通用代理协议,可以处理任何类型的流量,因此非常适合网页抓取、API 测试和自动化。我们将涵盖测试代理、设置环境变量以及为大规模抓取轮换代理。

ProxyScrape 提供支持 HTTP 和 SOCKS5 的住宅、数据中心和移动代理。其 9700 万+ IP 池和可靠正常运行时间使其成为需要可靠基础设施的团队的稳妥选择。

先决条件

开始之前,请确保你有:

  • 有效的 ProxyScrape 订阅(住宅、数据中心或移动)。
  • 你的 ProxyScrape SOCKS5 端点详细信息:主机、端口、用户名和密码。
  • 装有 Windows Terminal(或命令提示符)和 PowerShell 的 Windows 10 或 11。
  • 已安装 curl。Windows 10(版本 1803+)和 Windows 11 默认包含 curl。如果没有,请从 curl 官方网站下载。

步骤

1. 获取你的 ProxyScrape SOCKS5 端点

登录你的 ProxyScrape 仪表板,并导航到代理列表或端点部分。选择 SOCKS5 作为协议,然后为你选择的代理类型(住宅、数据中心或移动)复制主机、端口、用户名和密码。如果你有轮换套餐,可能还会看到多个端点的列表。

2. 在 Windows Terminal 中用 curl 测试代理

打开 Windows Terminal(或命令提示符),运行一个简单的 curl 命令来验证代理是否可用。使用 --socks5-hostname 标志将 DNS 也通过代理路由。

curl --socks5-hostname username:password@host:port https://httpbin.org/ip

将 username、password、host 和 port 替换为你的实际凭据。如果成功,响应将显示代理的 IP 地址,而不是你自己的 IP 地址。

3. 设置环境变量以在系统范围内使用代理

许多命令行工具会遵循 ALL_PROXY 环境变量。在 PowerShell 中,你可以为当前会话设置它:

$env:ALL_PROXY = "socks5://username:password@host:port"

对于命令提示符,使用:

set ALL_PROXY=socks5://username:password@host:port

要使其永久生效,请通过 Windows 设置或使用 setx 将其添加到系统环境变量中。请注意,并非所有工具都支持通过环境变量使用 SOCKS5,但 curl、wget 和许多其他工具支持。

4. 使用 ProxyScrape SOCKS5 和 curl 进行网页抓取

配置好代理后,你可以抓取网页。例如,将页面保存到文件:

curl --socks5-hostname username:password@host:port -o output.html https://example.com

如果你有一个代理列表(例如,来自 ProxyScrape 的轮换端点列表),你可以在脚本中循环遍历它们。

5. 通过 ProxyScrape 路由 PowerShell 的 Invoke-WebRequest

PowerShell 的 Invoke-WebRequest 原生不支持 SOCKS5。如果你需要使用 PowerShell cmdlet,请改用 HTTP 代理。ProxyScrape 也提供 HTTP 代理;你可以将 HTTP 端点与 Invoke-WebRequest 一起使用:

Invoke-WebRequest -Uri "https://example.com" -Proxy "http://username:password@host:port"

要在 PowerShell 中使用 SOCKS5,请直接调用 curl.exe,如第 2 步所示。

6. 使用 ProxyScrape SOCKS5 和 Python requests(可选)

如果你使用 Python 进行抓取,请安装支持 SOCKS 的 requests 库:

pip install requests[socks]

然后在脚本中使用代理:

import requests

proxies = {
    'http': 'socks5://username:password@host:port',
    'https': 'socks5://username:password@host:port'
}
response = requests.get('https://httpbin.org/ip', proxies=proxies)
print(response.text)

7. 为大规模抓取轮换代理

对于大型任务,通过多个代理轮换来避免速率限制。创建一个文本文件 proxies.txt,每行一个代理,格式为 host:port:username:password。然后使用 PowerShell 脚本进行迭代:

$proxies = Get-Content proxies.txt
foreach ($proxy in $proxies) {
    $parts = $proxy -split ':'
    $host = $parts[0]
    $port = $parts[1]
    $user = $parts[2]
    $pass = $parts[3]
    $proxyUrl = "socks5://${user}:${pass}@${host}:${port}"
    $env:ALL_PROXY = $proxyUrl
    curl.exe -s --socks5-hostname "${user}:${pass}@${host}:${port}" https://httpbin.org/ip
}

根据你的抓取目标调整脚本。

故障排除

  • Connection refused: 验证主机和端口是否正确,以及如果需要,你的 IP 是否已加入白名单。
  • Authentication failed: 请仔细检查你的用户名和密码。特殊字符可能需要进行 URL 编码(例如,@ 变成 %40)。
  • DNS resolution errors: 在 curl 中始终使用 --socks5-hostname,让代理解析 DNS。
  • Slow performance: 如需速度,请尝试数据中心代理;住宅代理更隐蔽但速度较慢。
  • Environment variables not working: 某些工具会忽略 ALL_PROXY。请改用命令行标志。

总结

你已经学会了如何在 Windows 上使用 ProxyScrape SOCKS5 代理与命令行工具(包括 curl、Windows Terminal 和 PowerShell)。我们涵盖了测试代理、设置环境变量、为抓取轮换代理,以及 PowerShell cmdlet 的变通方法。ProxyScrape 可靠的基础设施和 9700 万+ IP 的大型池使其成为网页抓取和自动化的强有力选择。对于更高级的设置,可以考虑使用其住宅代理来实现隐蔽性,或使用数据中心代理来处理高速任务。