2

JavaScript を既存のアプリケーションに挿入する必要があります。

iframeアプリケーションは通常、次のように埋め込まれます。

<html>
<body>
    <iframe src="http://webchat.quakenet.org/" width="647" height="400"></iframe>
</body>
</html>

これは、オープンソースの JavaScript ベースの IRC クライアントhttp://webchat.quakenet.org/ ( source ) です。

たとえば、特別なメッセージを強調表示するために、いくつかの JS を挿入するのが好きです。このために、オーバーライドするHilighterClassを既に見つけました。

問題は、どうすればそれができるかということです。JS を に注入することiFrameは、最新のブラウザーでは「許可」されていないと思いますか?

問題がある場合iFrameは、彼らのようにクライアントを追加できます。

<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
  <base />
  <title>QuakeNet Web IRC (qwebirc)</title>
 ...
  <script type="text/javascript">
    var ui = new qwebirc.ui.Interface("ircui", qwebirc.ui.QUI, {"appTitle":"QuakeNet Web     IRC","dynamicBaseURL":"/dynamic/leibniz/","baseURL":"http://webchat.quakenet.org/","validateNickname":false,"networkServices":["Q!TheQBot@CServe.quakenet.org"],"nickValidation":    {"maxLen":15,"validSubChars":"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ_[]{}`^\\|0123456789-","validFirstChar":"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ_[]{}`^\\|","minLen":2},"staticBaseURL":"/static/leibniz/","loginRegex":"^You are now logged in as [^ ]+\\.$","networkName":"QuakeNet"});
  </script>
</head>
<body>
  <div id="ircui">
    <noscript>
      <div id="noscript">Javascript is required to use IRC.</div>
    </noscript>
  </div>
</body>
</html>

要件:

  • クライアントは quakenet.org サーバーに接続する必要があります。クロスサイト スクリプティングの制限により、これが問題になる可能性があります。
  • 私のユーザーのための他のプラグインが必要ない場合に最適です。
4

3 に答える 3

2

JavaScript をページに挿入できるPrivoxyのようなプロキシ サーバーを使用できます。残念ながら、ユーザーはすべてのブラウジングを Privoxy 経由で行う必要があるため、それはオプションではない可能性があります。

または、独自のリバース プロキシ (Squid など) を設定し、中継する前にコンテンツを変更します。JavaScript ライブラリへの要求を、元の JavaScriptとハイライト コードを含む独自のライブラリへの呼び出しに置き換えます。

Ans 確かにGreasemonkeyについて聞いたことがあるでしょう。これはまさにそれを行うことができるブラウザプラグインです - コンテンツを挿入します。

于 2012-10-16T13:02:02.600 に答える
1

iframe のコンテンツを操作することはできません。ここでは、クロス サイト スクリプティングは問題ではありません。

于 2012-10-16T12:55:33.357 に答える
0

インジェクションを簡単に行うには、Gatejs SPDY/HTTP プロキシを使用し、インジェクション Gatejs オペコードを使用します。これは、フォワード プロキシとリバース プロキシの両方で機能します。

Gatejs インジェクションは、html コードを HTML タイプ (text/html) のコンテンツに追加しようとします。

以下は、インジェクションを使用したフォワード プロキシの例です。

var serverConfig = function(bs) { return({
    hostname: "testServer0",
    runDir: "/tmp/gatejs",
    dataDir: "/path/to/dataDir",
    logDir: "/var/log/gatejs",

    http: {
        testInterface: {
            type: 'forward',
            port: 8080,
            pipeline: 'pipetest'
        },
    },
    pipeline: {
        pipetest: [
            ['injection', {
                 code: "<h1>w00t injection</h1>"
            }],
            ['proxyPass', { mode: 'host', timeout: 10 }]
        ],
    }
})};

mk-

于 2015-07-12T09:47:42.760 に答える