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

在Apify控制台中使用Playwright对接Apify试用代理的正确代码求助

在Apify控制台中使用Playwright Python对接Apify代理的正确代码

你的原代码存在两个核心问题:

  1. 混用了Playwright的同步API(sync_playwright)和异步语法(await),这会直接导致运行错误
  2. 手动填写代理信息的方式不符合Apify平台规范,平台会自动注入代理相关环境变量,无需手动配置

以下是适配Apify平台的正确代码,分为同步和异步两个版本:

同步版本

from playwright.sync_api import sync_playwright
import os

with sync_playwright() as p:
    # 从Apify环境变量中获取代理配置
    proxy_config = {
        "server": f"http://{os.environ['APIFY_PROXY_HOSTNAME']}:{os.environ['APIFY_PROXY_PORT']}",
        "username": os.environ['APIFY_PROXY_USERNAME'],
        "password": os.environ['APIFY_PROXY_PASSWORD']
    }
    
    # 启动浏览器时直接配置代理上下文
    browser = p.chromium.launch(headless=True)
    context = browser.new_context(proxy=proxy_config)
    page = context.new_page()
    
    # 访问目标页面
    page.goto("https://example.com")
    
    # 执行你的爬取/自动化逻辑
    # ...
    
    # 关闭资源
    page.close()
    context.close()
    browser.close()

异步版本

如果你更倾向于使用异步API:

import asyncio
from playwright.async_api import async_playwright
import os

async def main():
    async with async_playwright() as p:
        # 从Apify环境变量中获取代理配置
        proxy_config = {
            "server": f"http://{os.environ['APIFY_PROXY_HOSTNAME']}:{os.environ['APIFY_PROXY_PORT']}",
            "username": os.environ['APIFY_PROXY_USERNAME'],
            "password": os.environ['APIFY_PROXY_PASSWORD']
        }
        
        # 启动浏览器时配置代理上下文
        browser = await p.chromium.launch(headless=True)
        context = await browser.new_context(proxy=proxy_config)
        page = await context.new_page()
        
        # 访问目标页面
        await page.goto("https://example.com")
        
        # 执行你的爬取/自动化逻辑
        # ...
        
        # 关闭资源
        await page.close()
        await context.close()
        await browser.close()

asyncio.run(main())

关键说明

  • Apify平台会自动为运行中的Actor注入APIFY_PROXY_HOSTNAME、APIFY_PROXY_PORT、APIFY_PROXY_USERNAME、APIFY_PROXY_PASSWORD这些环境变量,无需手动填写
  • 必须在创建浏览器上下文(new_context)时就配置代理,而不是先创建页面再修改代理设置,这是Playwright的规范要求
  • 同步API和异步API要严格区分,不能混用await和同步调用

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.21 08:33:26