如何使用 HTMLUnit 编写事件处理程序并检测某些 JavaScript 调用?

How to write Event Handlers and detect certain JavaScript calls using HTMLUnit?

我想使用Java API, HTMLUnit,来检测Java脚本程序在网页上调用eval()的次数.但是,HTMLUnit 没有针对此类 JavaScript 函数的内置处理程序。如何做到这一点?

谢谢。

只是一个想法。也许您可以将带有此代码的脚本注入到您正在加载的 html 的开头:

(function(){
    const oldEval = window.eval;
    window.eval = function () {

        // communicate here with your Java program that eval has been
        // called. Maybe you can use the postMessage method?

        return oldEval.apply(this, arguments);
    };
})();

有了这个,你劫持了 eval 函数,你可以在每次调用 eval 时执行一些代码。如果您找到一种与您的程序进行通信的好方法,那么也许这会奏效。

不确定是否有问题,但 Javascript 有多种方法可以在运行时评估代码,而不仅仅是 eval。因此,这是劫持了对 eval 的直接调用,但没有考虑其他评估可能性,例如使用 Function 构造函数或 setTimeout。