1

私の C++ プログラムは Internet Explorer (IE6 から IE10 までで動作します) を起動して、インターネット上の Web ページを表示します。Web ページを変更する方法がありません。Web ページは JavaScript ファイル ( <script>HTML マークアップでタグを使用) を参照します - swfobject JavaScript ライブラリのコピーです。私が提供するこのファイルのカスタム コピーを Web ページで使用したいと思います。

これに取り組むための2つの可能な方法を思いついた

  1. Internet Explorer が接続するプロキシ サーバーを記述します。プロキシは実際のデータを取得し、HTML を書き換えて、自分の swfobject のコピーが参照されるようにします。残念ながら、これはかなりの作業であり、おそらく https では機能しません。今のところ、https のサポートがなくても大丈夫です。

  2. すべての http 要求をインターセプトする Internet Explorer 用の非同期プロトコル プラグインを実装します。JavaScript ファイルは常に http を使用して取得されることがわかっているため、swfobject JavaScript ファイルへのアクセスをインターセプトして、代わりに独自のファイルを生成できます。残念ながら、これも不可能のようです。Microsoft のサポート ページでは説明されています。

    Internet Explorer は、HKEY_CURRENT_ROOT\PROTOCOLS\Http を CLSID 以外の値で上書きしようとする素朴な試みを無視します。

    これは、カスタム プロトコル ハンドラで 'http' をフックしても機能しないようです。いずれにせよ、既存の http プロトコル ハンドラが存在する場合、このアプローチにも問題があります。

これら2つのどちらよりもこれを解決するためのより良い方法はありますか?

4

3 に答える 3

3

要件の複雑さによっては、Fiddlerは、要求と応答の両方を自動的に書き換えることができ、必要なものをスクリプト化する簡単な方法になるため、カスタム プロキシに代わる便利な方法になる場合があります。

HTTPS でもうまく機能するため、その部分は「無料」です。

指定したルールに基づいて、Fiddler で自動的に要求と応答を書き換えたり、ヘッダーを追加または削除したり、セッションにフラグを立てたり無視したりしたいですか? FiddlerScript クックブックをご覧ください

料理本へのリンクはこちら

埋め込む必要がある場合は、FiddlerCoreとして埋め込むこともできます。

@MSalters が以下で指摘しているように、Fiddler のオプションの SSL インターセプトは、使用する前にトレードオフを検討する必要があります。それはここに文書化されており、この回答でどのように機能するかの簡単な要約を書きました。

于 2013-02-06T13:39:51.270 に答える
2

アイデアを書き留めるだけで、WinSock の send() および recv() 関数を独自のプロセスにフックすることができます。これは一種の中間者です..このソリューションには、非常に複雑な欠点があります。

于 2013-02-06T13:49:14.870 に答える
1

簡単、URLを翻訳するだけ。swfobjectURL を URL に変更file://し、コピーを指します。

(実際に IExplorer.EXE を起動しているわけではありませんよね? それは Web ページを開く方法ではありません。ShellExecuteブラウザの選択をユーザーに任せて で URL を起動するか、IE のコアである MSHTML をInternet Explorer は Windows の一部ではなく、たとえば Windows N では存在しない場合があります。)

于 2013-02-06T15:34:07.687 に答える