如何捕获从 MFC Web 浏览器 C++ 发出的 GET/POST 请求

Posted

技术标签:

【中文标题】如何捕获从 MFC Web 浏览器 C++ 发出的 GET/POST 请求【英文标题】:How to capture GET/POST request made from MFC web browser c++ 【发布时间】:2018-11-02 01:22:36 【问题描述】:

我有 MFC 应用程序,它基本上是网络浏览器。我为此使用了 ChtmlView 类。在执行应用程序时,它将导航到某个默认网页。在那个页面上有一些按钮。单击任何按钮将生成 GET/POST 请求。我想捕获那些 GET/POST 请求及其响应。此外,我必须确保浏览器获得的响应来自有效来源。

以下网页类似于我正在处理的页面support.google.com/books/partner/answer/3254227?hl=en 在此网页上,有“是”和“否”按钮。单击任何这些按钮时,它会发送一些 POST/GET 请求

【问题讨论】:

您可以使用 Igor Tandetnik 的 Passthrough 应用程序:blog.salsitasoft.com/… 这些 POST/GET 请求是如何发送的?形式? XMLHttpRequest?其他方式? 我的 MFC 应用程序无法控制这些请求的发送方式。按钮在网页上,并且有一些与之关联的 java 脚本和 onClick 事件它正在发送这些请求 你应该展示MCVE,而不是一句话描述网站。 CHTMLView 没有按钮和 javascript 的问题。看看它是否可以在 Internet Explorer 上运行 @Barmak - 以下网页类似于我正在处理的页面 [support.google.com/books/partner/answer/3254227?hl=en][1] 在此网页上有“是”和“否”按钮。单击任何这些按钮时,它会发送一些 POST/GET 请求 【参考方案1】:

CHTMLViewer 包装了一个IWebBrowser2。有用的部分被包裹起来。在这种情况下,您需要 CHtmlView::OnBeforeNavigate2 回调。它通过 GET 或 POST 请求调用。

如果您不信任 URL(即不是有效的来源),您可以使用 OnBeforeNavigate2 中的最后一个 cancel 参数来停止 GET 或 POST。

【讨论】:

感谢@MSalters,在我的情况下,当我单击网页上的按钮时,它不会导航到其他页面,而只是发送 GET 或 POST 请求。由于点击事件不会导致导航到其他页面,因此从未调用过“OnBeforeNavigate2”方法

以上是关于如何捕获从 MFC Web 浏览器 C++ 发出的 GET/POST 请求的主要内容,如果未能解决你的问题,请参考以下文章

在 MFC (C++) 中捕获并保存窗口的屏幕截图

MFC C++:setfocus 也设置捕获吗?

将 MFC 类转换为 C++ 标准库

如何在 webdriver 中捕获页面发出的所有请求? Browsermob有啥替代品吗?

mfc c++ 从编辑控件更新文本文件

如何使用 Fiddler 捕获非浏览器数据