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のJSを確認した後。href終わり近くに含まれています:

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

ブックマークレットは、clientutils.jsへのリンクをドキュメントの最後に追加するJavaScriptコードの小さなスニペットを実行するだけです。その後、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 に答える