Skip to content
文章 / 2 分钟阅读

ProxyScrape Python 和 Web:如何获取、验证和轮换代理

ProxyScrape 提供可下载的代理列表和 API,但免费列表并非生产级基础设施。以下是一个安全的 Python 工作流,用于获取、验证和轮换代理,以及在 Web 仪表板中应检查的内容。

ProxyScrape 经常与 Python 一起被搜索,因为用户想要在脚本中获取代理列表、测试并轮换它。Web 仪表板和 API 有重叠,但用途不同。本指南重点介绍一个安全的工作流:获取、验证、轮换,并了解何时免费代理是错误的工具。

从 ProxyScrape 获得什么:Web 列表、API 和付费池

ProxyScrape 提供代理列表下载和 API 访问,以及商业代理服务。确切的端点、协议、格式、限制和可用位置可能会变化,因此请始终在您的 ProxyScrape 仪表板或当前文档中确认。不要未经检查就硬编码您在旧教程中找到的端点。

免费代理列表最适合学习和测试。它们通常不适合生产环境抓取、登录或任何敏感数据,因为正常运行时间、速度和可信度差异很大。

在 Python 中获取代理列表

首先将 API URL 存储在环境变量中,而不是将其提交到代码中。

import os
import requests

API_URL = os.environ['PROXYSCRAPE_API_URL']  # copy from your ProxyScrape dashboard/docs

response = requests.get(API_URL, timeout=15)
response.raise_for_status()

lines = [line.strip() for line in response.text.splitlines() if line.strip()]
print(f'Fetched {len(lines)} proxies')
print(lines[:5])

如果 API 返回 JSON,请在选择字段之前检查响应结构。字段名称可能会变化。

data = response.json()
# Adjust this to match the current API response
proxies = [item['proxy'] for item in data.get('proxies', [])]

在代理浪费您的时间之前验证它们

代理列表在测试之前没有用。针对无害的 IP 回显端点进行验证,并记录哪些代理可用。

import concurrent.futures
import requests

TEST_URL = 'https://api.ipify.org?format=json'

def check(proxy):
    # Use http:// for HTTP proxies.
    # For SOCKS5, install requests[socks] and use socks5h://host:port.
    proxy_url = f'http://{proxy}'
    proxies = {'http': proxy_url, 'https': proxy_url}
    try:
        response = requests.get(TEST_URL, proxies=proxies, timeout=8)
        response.raise_for_status()
        return proxy, response.json()
    except Exception:
        return proxy, None

working = []
with concurrent.futures.ThreadPoolExecutor(max_workers=50) as pool:
    for proxy, result in pool.map(check, lines[:200]):
        if result:
            working.append(proxy)
            print('OK', proxy, result)

print(f'Working: {len(working)}')

对于 SOCKS5 代理,当您想要远程 DNS 时,请使用 socks5h://host:port。对于需要认证的代理,格式通常是 http://user:pass@host:port 或 socks5h://user:pass@host:port,但请确认提供商的格式。

在 Python 脚本中轮换代理

一旦您有了一个可用代理池,就用可预测的策略轮换它们。按请求轮换很简单,但它可能会破坏会话并触发登录检查。

import itertools
import requests
from requests.adapters import HTTPAdapter

working_proxies = working  # from the validator above
proxy_cycle = itertools.cycle(working_proxies)

session = requests.Session()
session.mount('https://', HTTPAdapter(max_retries=2))

urls = [
    'https://example.com/page/1',
    'https://example.com/page/2',
    'https://example.com/page/3',
]

for url in urls:
    proxy = next(proxy_cycle)
    proxies = {
        'http': f'http://{proxy}',
        'https': f'http://{proxy}',
    }
    try:
        response = session.get(url, proxies=proxies, timeout=12)
        print(response.status_code, proxy, url)
    except requests.RequestException as exc:
        print('FAILED', proxy, exc)

如果目标站点需要稳定的会话,请使用粘性会话,而不是每次都轮换。许多提供商通过用户名中的会话 ID 来实现这一点。请查看您的提供商文档以获取确切格式;不要猜测。

使用 ProxyScrape Web 仪表板

Web 端对于快速检查很有用:

  • 下载您所需格式的列表。
  • 如果可用,按协议筛选,例如 HTTP 或 SOCKS5。
  • 如果可用,按国家或匿名级别筛选。
  • 复制 API 端点以用于自动化。
  • 检查列表是免费还是与付费计划绑定。
  • 确认目标站点允许您计划的访问类型。

如果下载的列表在几分钟内就失效,这对免费代理来说是正常的。将其视为一次性资源。

道德、安全和法律检查

  • 遵守目标站点的条款、robots.txt 和速率限制。
  • 不要通过不受信任的免费代理发送凭据、个人数据或支付数据。
  • 使用 TLS 并验证证书。
  • 如果您处理个人数据,请检查 GDPR、CCPA 和其他适用规则。
  • 当您需要可靠性和支持时,请使用付费住宅或数据中心代理。

要点

ProxyScrape 可以从 Web 仪表板和 Python 中使用,但工作流比来源更重要。获取当前列表、验证它、有目的地轮换,并将免费代理保留在它们应在的地方:测试和学习中。