从 WebView2 Edge 网站登录中获取 cookie 以进行 WinInet/WinHTTP 爬网

问题描述

假设我使用 WinInet/WinHTTP 来抓取网站。过去,我可以简单地要求用户使用嵌入式 IE 控件或 IE 浏览器登录网站,而 WinInet 将使用与 IE 浏览器相同的 cookie。现在不会了,因为 Internet Explorer 会变老并且很快就会被删除

无论出于何种原因,Edge 浏览器都不会包装/使用 Windows Internet 设置/cookies 存储......有没有人有通过嵌入式 webview2 登录的经验......获取厨师并转移到 WinInet?在这里,您可以使用 WinInet/WinHTTP 在登录状态下抓取网站

在发出 WinInet HTTP 请求之前,通过嵌入式 WebView2 控件登录并将所有 cookie 传输到 WinInet 是否可行?

(我添加一个特定于 Delphi 的标签 (TEdgebrowser),但我很想知道是否可以将上述一般概念付诸实践。)

解决方法

我们向 WebView2 添加了 CoreWebView2.CookieManager,因此您应该能够枚举 WebView2 中的所有 cookie 并将它们设置为 wininet,反之亦然。 WebView2 和 Edge 基于 Chromium 并且有自己的 HTTP 堆栈和状态位置,因此没有连接到 wininet。