如何在Web浏览器中捕获AJAX请求

时间:2013-09-06 23:36:42

标签: ajax delphi http webbrowser-control twebbrowser

如何捕获页面使用Webbrowser / EmbeddedWB发出的所有AJAX请求?不幸的是,在针对AJAX请求时,不会触发BeforeNavigate2。

例如:在Google搜索栏中输入时发出的请求。

2 个答案:

答案 0 :(得分:1)

如果我是你,我会在加载之后将自己的脚本注入每个页面。这是一个捕获所有AJAX请求并通知应用程序的脚本。

使用以下代码,您可以捕获jQuery发出的每个AJAX请求(Haven尝试过,但我认为它不适用于非jQuery AJAX请求)。

$.ajaxSetup({
    beforeSend: function() {
        // before sending the request
    },
    complete: function() {
        // after request completion
    }
});

它甚至不是代码,但它可以为您提供您想要做的事情的线索。

当然使用这种方法时,您需要以某种方式与您的应用程序进行通信。例如,我使用我的编写协议和一个新的窗口命令,以便我的Delphi组件能够捕获和解析事件。

正如我所说,这里有很多选择,而我只是在提供线索。

答案 1 :(得分:1)

如果环境在您的控制之下。您可以使用自定义HTTP代理(例如,基于Indy)。

请参阅:Indy's TIdHTTPProxyServer: How to filter requests?

可以根据特定标头检测Ajax请求:

How to differentiate Ajax requests from normal Http requests?


更新:Microsoft网络论坛上的这个问题已经接受了答案: