107 lines
3.3 KiB
Python
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())
|