You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Python检测代理类型(SOCKS4/SOCKS5)及异步筛选SOCKS5

异步检测代理类型并筛选SOCKS5代理

实现思路

针对收集到的IP:PORT格式代理列表,通过异步尝试不同类型的代理连接判断其支持的协议:

  1. 优先测试SOCKS5连接,成功则标记为SOCKS5
  2. 若SOCKS5失败,依次测试SOCKS4、HTTP
  3. 最终筛选出支持SOCKS5的代理

依赖安装

先安装所需异步网络库:

pip install aiohttp aiohttp_socks

完整代码实现

import asyncio
from aiohttp import ClientSession, ClientError
from aiohttp_socks import ProxyConnector, ProxyType

async def check_proxy_type(proxy_addr: str) -> str | None:
    # 选用稳定的公开接口做连通性测试
    test_url = "http://httpbin.org/ip"
    timeout = 10  # 设置超时,避免阻塞任务队列

    # 按优先级尝试不同代理类型
    for proxy_type in [ProxyType.SOCKS5, ProxyType.SOCKS4, ProxyType.HTTP]:
        try:
            host, port = proxy_addr.split(":")
            connector = ProxyConnector(
                proxy_type=proxy_type,
                host=host,
                port=int(port),
                verify_ssl=False
            )
            async with ClientSession(connector=connector, timeout=timeout) as session:
                async with session.get(test_url):
                    return proxy_type.name
        except (ClientError, asyncio.TimeoutError, ValueError):
            continue
    return None

async def main(proxy_list: list[str]):
    tasks = [check_proxy_type(proxy) for proxy in proxy_list]
    results = await asyncio.gather(*tasks, return_exceptions=False)
    
    # 筛选SOCKS5代理
    socks5_proxies = [proxy for proxy, res in zip(proxy_list, results) if res == "SOCKS5"]
    
    print("有效SOCKS5代理:")
    for proxy in socks5_proxies:
        print(proxy)
    return socks5_proxies

if __name__ == "__main__":
    # 替换为你的实际代理列表
    PROXIES = [
        "123.45.67.89:1080",
        "98.76.54.32:1081",
        # ... 更多代理
    ]
    asyncio.run(main(PROXIES))

代码说明

  • 超时控制:10秒超时限制,避免单个代理测试拖慢整体任务
  • 连接验证:通过访问httpbin.org/ip确认代理连通性,无需解析返回内容
  • 异常处理:捕获连接错误、超时、格式错误等异常,保证任务队列稳定运行
  • 结果筛选:直接提取测试结果为SOCKS5的代理,输出并返回

内容的提问来源于stack exchange,提问作者Silent Mind

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 15:06:38