""" 测试Playwright使用代理访问HTTP和HTTPS网站 """ import asyncio import warnings import sys from playwright.async_api import async_playwright from damai_proxy_config import get_proxy_1, format_proxy_for_playwright # 抑制Windows下asyncio的资源警告 warnings.filterwarnings('ignore', category=ResourceWarning) async def test_proxy_with_playwright(): """使用Playwright测试代理""" # 获取代理配置 proxy_config = get_proxy_1() proxy = format_proxy_for_playwright(proxy_config) print("\n" + "="*60) print("Playwright代理测试") print("="*60) print(f"\n代理配置:") print(f" 服务器: {proxy['server']}") print(f" 用户名: {proxy['username']}") playwright = None browser = None try: playwright = await async_playwright().start() print(f"\n启动浏览器...") browser = await playwright.chromium.launch( headless=True, proxy=proxy ) print(f"浏览器启动成功\n") context = await browser.new_context() page = await context.new_page() # 测试1: HTTP网站 print("-"*60) print("测试1: 访问HTTP网站 (http://httpbin.org/ip)") print("-"*60) try: response = await page.goto("http://httpbin.org/ip", timeout=15000, wait_until="domcontentloaded") print(f"成功 - 状态码: {response.status}") content = await page.content() if 'origin' in content: print("页面包含IP信息\n") except Exception as e: print(f"失败: {str(e)}\n") # 测试2: HTTPS网站 print("-"*60) print("测试2: 访问HTTPS网站 (https://httpbin.org/ip)") print("-"*60) try: response = await page.goto("https://httpbin.org/ip", timeout=15000, wait_until="domcontentloaded") print(f"成功 - 状态码: {response.status}\n") except Exception as e: print(f"失败: {str(e)}\n") # 测试3: 小红书HTTP print("-"*60) print("测试3: 访问小红书HTTP (http://xiaohongshu.com)") print("-"*60) try: response = await page.goto("http://xiaohongshu.com", timeout=15000, wait_until="domcontentloaded") print(f"成功 - 状态码: {response.status}") print(f"最终URL: {page.url}\n") except Exception as e: print(f"失败: {str(e)}\n") # 测试4: 小红书HTTPS print("-"*60) print("测试4: 访问小红书HTTPS (https://xiaohongshu.com)") print("-"*60) try: response = await page.goto("https://xiaohongshu.com", timeout=15000, wait_until="domcontentloaded") print(f"成功 - 状态码: {response.status}\n") except Exception as e: print(f"失败: {str(e)}\n") await context.close() except Exception as e: print(f"\n测试过程出错: {str(e)}") import traceback traceback.print_exc() finally: if browser: await browser.close() if playwright: await playwright.stop() print("="*60) print("测试完成") print("="*60 + "\n") if __name__ == "__main__": asyncio.run(test_proxy_with_playwright())