Python中Playwright配置代理失效问题及有效代理获取咨询
问题解答
免费代理无法生效的核心原因
你怀疑的没错,免费代理大概率就是问题根源,主要有这几点:
- 免费代理存活周期极短,很多刚获取到就已经失效,你用的
209.166.175.201:3128很可能已经无法连接 - 多数免费代理早已被目标网站加入黑名单,直接被拦截
- 免费代理稳定性差,延迟高、连接超时是常态,无法保证正常访问
- 部分免费代理需要身份验证,但你当前的代码没配置
username和password字段
代码优化建议
先排查代理可用性,再优化配置:
from playwright.sync_api import sync_playwright, PlaywrightTimeoutError import requests import time # 先测试代理是否能正常访问目标网站 proxy_server = "209.166.175.201:3128" test_url = "https://www.momox-shop.fr/livres-romans-et-litterature-C055/" try: resp = requests.get(test_url, proxies={"https": f"http://{proxy_server}"}, timeout=10) print(f"代理可用,状态码: {resp.status_code}") except Exception as e: print(f"代理失效: {str(e)}") # 优化后的Playwright代码 with sync_playwright() as p: try: browser = p.firefox.launch( headless=False, proxy={ 'server': proxy_server, # 如果代理需要认证,添加以下字段 # 'username': 'your_proxy_user', # 'password': 'your_proxy_pass' }) page = browser.new_page() page.goto(test_url, timeout=30000) print("页面加载成功") # 这里可以添加数据提取逻辑 time.sleep(5) except PlaywrightTimeoutError: print("代理连接超时,更换代理重试") except Exception as e: print(f"访问失败: {str(e)}") finally: browser.close()
可用代理的获取途径
- 付费代理服务商:这是最靠谱的选择,提供稳定的IP池、不同地区的节点,还有售后支持,适合长期或大规模的数据提取需求
- 自建代理池:通过爬虫抓取多个免费代理源,然后定期验证代理的可用性(比如测试能否访问目标网站),只保留有效代理,适合小量、低成本的需求
- 企业级代理服务:如果需要高频次访问或应对反爬严格的网站,可选择提供动态IP、会话保持的企业级代理,能有效降低被拦截的概率
内容的提问来源于stack exchange,提问作者Icarso6
相关产品推荐
相关产品推荐

