Files
ai_wht_wechat/backend/test_proxy_playwright.py
2026-01-07 22:55:59 +08:00

107 lines
3.3 KiB
Python

"""
测试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())