假设我正在使用 WinInet/WinHTTP 来抓取网站。过去,我可以简单地要求用户使用嵌入式 IE 控件或 IE 浏览器登录网站,WinInet 将使用与 IE 浏览器相同的 cookie。现在这种情况不会再发生了,因为 Internet Explorer 已经过时并且很快就会被删除。
无论出于何种原因,Edge 浏览器不会包装/使用 Windows Internet 设置/cookie 存储...是否有人有通过嵌入式 webview2 登录的经验...获取 cookie 并传输到 WinInet?这里的目的是您可以使用 WinInet/WinHTTP 在登录状态下抓取网站。
通过嵌入式WebView2控件登录并在发出WinInet HTTP请求之前将所有cookie传输到WinInet是一个可行的解决方案吗?
(我添加了一个 Delphi 特定标签(TEdgeBrowser),但我有兴趣听听上述概念是否可以发挥作用。)
最佳答案
我们添加了 CoreWebView2.CookieManager到 WebView2,因此您应该能够枚举 WebView2 中的所有 cookie 并将它们设置到 wininet,反之亦然。 WebView2 和 Edge 基于 chromium,有自己的 HTTP 堆栈和状态位置,因此未连接到 wininet。
关于cookies - 从 WebView2 Edge 网站登录获取 cookie 以进行 WinInet/WinHTTP 爬网,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68587138/