告别单 IP 限制:Python 批量获取 HTTP 代理 IP 教程

举报
沉默的代码 发表于 2026/03/02 10:10:22 2026/03/02
【摘要】 Python 爬虫 / 批量请求易因单 IP 触发访问限制,批量获取并验证 HTTP 代理 IP 可高效解决该问题。本文提供基于 requests 库的精简实现代码,新手易上手:仅需安装 requests 依赖、替换代理池 API 地址即可使用。代码聚焦核心需求,整合代理池获取、数量适配、有效性校验功能,自动处理代理数量不足、数据格式异常等问题,能快速筛选出可用代理,有效解决 IP 限制。

Python中批量获取并设置HTTP代理IP,可解决爬虫IP限制问题。以下是精简实用的实现方案,基于requests库,易上手、可直接使用。


1.jpg


前置准备:安装依赖 pip install requests,替换代理池API地址(支持开源或第三方代理服务)。


完整精简代码:

import requests
import random

# 配置(直接修改适配你的代理池)
PROXY_POOL_URL = "http://localhost:8000/get"  # 代理池API
TARGET_COUNT = 10  # 批量获取数量
TIMEOUT = 10  # 超时时间

def get_proxies():
    """获取并筛选可用代理"""
    try:
        resp = requests.get(PROXY_POOL_URL, timeout=TIMEOUT)
        resp.raise_for_status()
        proxy_list = resp.json()
        if not isinstance(proxy_list, list) or not proxy_list:
            print("代理池数据异常")
            return []
        # 随机选择指定数量,不足则取全部
        return random.sample(proxy_list, min(TARGET_COUNT, len(proxy_list)))
    except Exception as e:
        print(f"获取代理失败:{e}")
        return []

def use_proxies(proxies):
    """测试并使用代理"""
    valid = []
    for proxy in proxies:
        try:
            resp = requests.get("http://www.example.com", 
                                proxies={"http": proxy, "https": proxy},
                                timeout=TIMEOUT, allow_redirects=False)
            if 200 <= resp.status_code < 300:
                print(f"代理{proxy}可用")
                valid.append(proxy)
        except:
            print(f"代理{proxy}不可用")
    return valid

if __name__ == "__main__":
    proxies = get_proxies()
    if proxies:
        valid_proxies = use_proxies(proxies)
        print(f"最终可用代理:{valid_proxies}")
    else:
        print("无可用代理")

核心说明:代码整合核心功能,自动处理代理数量不足、数据格式异常等问题,筛选可用代理。使用时替换PROXY_POOL_URL即可,若代理需验证,可修改代理格式为http://user:pass@ip:port。

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。