0

我正在尝试对使用 CasperJS 的书签进行逆向工程。

它创建了一个对象__utils__,我可以使用它来执行控制台命令。

小书签的链接在这里:-

http://casperjs.org/api.html#bookmarklet

其中引用了这个 JavaScript 文件:-

https://raw.github.com/n1k0/casperjs/master/modules/clientutils.js

我已经搜索了整个源代码,但找不到有关如何创建该对象的参考。

任何指针将不胜感激。

4

2 回答 2

0

看源码api.html。之后Just drag this link查看href属性中的JS。接近尾声时,它包含:

window.__utils__=new%20window.clientUtils();
于 2013-02-26T01:16:59.950 回答
0

小书签只运行一小段 JavaScript 代码,将指向 clientutils.js 的链接附加到文档的末尾。之后,它将每 50 毫秒运行一个匿名函数,检查脚本是否已加载(并使该ClientUtils函数可用),如果已加载,它将停止运行该函数并创建window.__utils__,从而使其在控制台中可用。这是更易读格式的实际书签代码。应该很容易理解:

(function () {
  void(function () {
    if (!document.getElementById('CasperUtils')) {
      var CasperUtils = document.createElement('script');
      CasperUtils.id = 'CasperUtils';
      CasperUtils.src = 'https://raw.github.com/n1k0/casperjs/master/modules/clientutils.js';
      document.documentElement.appendChild(CasperUtils);
      var interval = setInterval(function () {
        if (typeof ClientUtils === 'function') {
          window.__utils__ = new window.ClientUtils();
          clearInterval(interval);
        }
      }, 50);
    }
  }());
})();
于 2013-02-26T01:23:18.863 回答