在使用playwright执行代码的时候,如需设置代理,可以在启动的时候加proxy 参数设置代理。 本篇总结下可以加proxy代理的几种方式。
launch 启动的时候设置全局代理,以下是示例
from playwright.sync_api import sync_playwrightwith sync_playwright() as playwright:
browser = playwright.chromium.launch(
headless=False, proxy={"server": "http://myproxy.com:3128"}
)
context = browser.new_context()
page = context.new_page()
page.goto('http://47.108.155.10/login.html')
browser.close()
proxy 传 dict 类型,可以设置的参数有
带账号密码的代理示例
from playwright.sync_api import sync_playwrightwith sync_playwright() as playwright:
browser = playwright.chromium.launch(
headless=False, proxy={ "server": "http://myproxy.com:3128", 'username': 'p-username', # 需要身份验证,可以通过这里指定用户名和密码
'password': 'p-password'
}
)
对于Windows上的Chromium,浏览器需要使用全局代理才能运行此选项。如果所有上下文都覆盖代理,则全局代理将永远不会使用,并且可以是任何字符串,例如launch({proxy:{server:’http://per-context“}}”)。
对于Windows上的Chromium,浏览器需要launch设置全局代理才能运行此选项。 如果上下文也设置了proxy代理,会覆盖launch设置全局代理。
from playwright.sync_api import sync_playwright
with sync_playwright() as playwright:
browser = playwright.chromium.launch(
headless=False, proxy={ "server": "http://myproxy.com:3128", 'username': 'p-username', # 需要身份验证,可以通过这里指定用户名和密码
'password': 'p-password'
}
)
context = browser.new_context( proxy={'server': 'http://127.0.0.1:8888'}
)
page = context.new_page()
page.goto('http://47.108.155.10/login.html')
对于firefox 和 webkit 系列浏览器,可以不用在launch设置proxy
from playwright.sync_api import sync_playwrightwith sync_playwright() as playwright:
browser = playwright.firefox.launch(headless=False)
context = browser.new_context(proxy={ 'server': 'http://127.0.0.1:8888'
})
page = context.new_page()
page.goto('http://47.108.155.10/login.html')
基于 context 创建的的new_page() 没有proxy参数设置
context = browser.new_context()
page = context.new_page()
基于browser 创建的new_page() 有proxy参数设置
from playwright.sync_api import sync_playwrightwith sync_playwright() as playwright:
browser = playwright.firefox.launch(headless=False)
page = browser.new_page( proxy={'server': 'http://127.0.0.1:8888'} )
page.goto('http://47.108.155.10/login.html')
非无痕模式启动浏览器只能在launch_persistent_context()添加proxy参数
from playwright.sync_api import sync_playwright
with sync_playwright() as playwright:
context = playwright.chromium.launch_persistent_context( # 指定本机用户缓存地址
user_data_dir=f"D:\chrome_userx\yoyo",
headless=False,
proxy={ 'server': 'http://127.0.0.1:8888'
}
)
page = context.pages[0]
page.goto('http://47.108.155.10/login.html')