go-rod / rod

A Chrome DevTools Protocol driver for web automation and scraping.

Home Page:https://go-rod.github.io

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

如何处理选择证书弹窗?

zobx opened this issue · comments

commented

Rod Version: v0.114.5

微信截图_20231120141617

commented

或者怎么默认加载.pfx的证书文件,默认选择确认

这应该是一个 upstream 问题,chromium 不支持这个 api,你可以看看 puppeteer 的一些解决方案,rod 同样适用:

puppeteer/puppeteer#540

commented

#367 应该是一个问题。
可不可以直接在 rod 启动时将证书导入到 rod 中,除了 hijack 外有其他方案吗?


It looks like as same as #367.
Can we add certication file (eg: .pfx, .crt) to rod at start. Is there has some solution rather than hijack?

可能有 cli 启动 flag 可以这么干,可能需要开发者自己去查下。

commented

没找到 go 或者 chrome 能导入证书的 api。而且在这个情况中也不能给什么 ignore 或 insecure 之类的 flag。

最后还是用 hijack 解决了问题,关键部分伪代码如下:

client := &http.Client{
	Transport: &http.Transport{
		TLSClientConfig: ...,
	},
}
...

hr := browser.HijackRequests()
hr.Add("*", "", func(h *rod.Hijack) {
	err := h.LoadResponse(client, true)
	if err != nil {
		h.ContinueRequest(&proto.FetchContinueRequest{})
	}
})
go hr.Run()
...