使用端口模式启动浏览器
找到chromium安装位置,默认位置如下
C:\Users\user\AppData\Local\pyppeteer\pyppeteer\local-chromium\588429\chrome-win32
cmd 执行chrome.exe --disable-infobars --remote-debugging-port=9222
在打开的chromium 浏览器输入http://localhost:9222/json
查看连接信息
[ {
"description": "",
"devtoolsFrontendUrl": "/devtools/inspector.html?ws=localhost:9222/devtools/page/6CB00490AAA1F35C7B5BCBE39D487B6B",
"id": "6CB00490AAA1F35C7B5BCBE39D487B6B",
"title": "随时随地使用 Chromium",
"type": "page",
"url": "http://localhost:9222/json",
"webSocketDebuggerUrl": "ws://localhost:9222/devtools/page/6CB00490AAA1F35C7B5BCBE39D487B6B"
} ]
webSocketDebuggerUrl就是要在程序中连接的地址(即下方测试demo中的连接参数browserWSEndpoint)
测试demo
import asyncio
import random
from pyppeteer.launcher import connect
useragents=['Mozilla/5.0 (Windows NT 6.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.138 Safari/537.36','Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.138 Safari/537.36','Mozilla/5.0 (Windows NT 6.2; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.138 Safari/537.36','Mozilla/5.0 (Windows NT 6.3; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.138 Safari/537.36','Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.138 Safari/537.36','Mozilla/5.0 (Windows NT 6.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.129 Safari/537.36','Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.129 Safari/537.36','Mozilla/5.0 (Windows NT 6.2; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.129 Safari/537.36']
async def main(url):
connect_params={
'browserWSEndpoint': 'ws://localhost:9222/devtools/page/6CB00490AAA1F35C7B5BCBE39D487B6B',
'logLevel':3,
}
browser = await connect(connect_params)
page = await browser.newPage() # 启动个新的浏览器页面
await page.setUserAgent(random.choice(useragents))
#设置页面超时时间
page.setDefaultNavigationTimeout(1000*60) #60s
#启用js
await page.setJavaScriptEnabled(True)
await page.setViewport({'width':1300,'height':750}) #设置界面
try:
await page.goto(url) # 访问登录页面
except Exception as e1:
print('e1:',e1)
await page.close()
await browser.close()
return
if __name__ == '__main__':
loop = asyncio.get_event_loop()
url = 'https://www.baidu.com'
m = main(url)
loop.run_until_complete(m)