これは可能ですが、Chrome 拡張機能を使用する必要があります。
Chrome 拡張機能には、多くのサンドボックス スタイルのセキュリティがあります。Chrome 拡張機能と Web ページの間の通信は、複数のステップからなるプロセスです。最後に完全に機能する例を示して、私が提供できる最も簡潔な説明を次に示します。
Chrome 拡張機能はchrome.* APIに完全にアクセスできますが、Chrome 拡張機能は Web ページ JS と直接通信することも、Web ページ JS が Chrome 拡張機能と直接通信することもできません。
Chrome 拡張機能と Web ページの間のギャップを埋めるには、コンテンツ スクリプトを使用する必要があります。コンテンツ スクリプトは、基本的window
に、対象の Web ページの範囲で挿入される JavaScript です。コンテンツ スクリプトは、関数を呼び出したり、Web ページ JS によって作成された変数にアクセスしたりすることはできませんが、同じ DOM へのアクセスを共有するため、イベントも共有します。
変数に直接アクセスして関数を呼び出すことは許可されていないため、Web ページとコンテンツ スクリプトが通信できる唯一の方法は、カスタム イベントを発生させることです。
たとえば、Chrome 拡張機能からページにメッセージを渡したい場合は、次のようにします。
content_script.js
document.getElementById("theButton").addEventListener("click", function() {
window.postMessage({ type: "TO_PAGE", text: "Hello from the extension!" }, "*");
}, false);
web_page.js
window.addEventListener("message", function(event) {
// We only accept messages from ourselves
if (event.source != window)
return;
if (event.data.type && (event.data.type == "TO_PAGE")) {
alert("Received from the content script: " + event.data.text);
}
}, false);
4. コンテンツ スクリプトから Web ページにメッセージを送信できるようになったので、必要なネットワーク情報をすべて収集する Chrome 拡張機能が必要になります。いくつかの異なるモジュールを使用してこれを実現できますが、最も単純なオプションはwebRequestモジュールです (以下のbackground.js を参照)。
`5. メッセージ パッシングを使用して、Web リクエストの情報をコンテンツ スクリプトにリレーし、次に Web ページ JavaScript にリレーします。
視覚的には、次のように考えることができます。

完全な作業例:
最初の 3 つのファイルは Google Chrome 拡張機能を構成し、最後のファイルは HTML ファイルで、http://
どこかの Web スペースにアップロードする必要があります。
icon.png
任意の 16x16 PNG ファイルを使用してください。
マニフェスト.json
{
"name": "webRequest Logging",
"description": "Displays the network log on the web page",
"version": "0.1",
"permissions": [
"tabs",
"debugger",
"webRequest",
"http://*/*"
],
"background": {
"scripts": ["background.js"]
},
"browser_action": {
"default_icon": "icon.png",
"default_title": "webRequest Logging"
},
"content_scripts": [
{
"matches": ["http://*/*"],
"js": ["content_script.js"]
}
],
"manifest_version": 2
}
background.js
var aNetworkLog = [];
chrome.webRequest.onCompleted.addListener(function(oCompleted) {
var sCompleted = JSON.stringify(oCompleted);
aNetworkLog.push(sCompleted);
}
,{urls: ["http://*/*"]}
);
chrome.extension.onConnect.addListener(function (port) {
port.onMessage.addListener(function (message) {
if (message.action == "getNetworkLog") {
port.postMessage(aNetworkLog);
}
});
});
content_script.js
var port = chrome.extension.connect({name:'test'});
document.getElementById("theButton").addEventListener("click", function() {
port.postMessage({action:"getNetworkLog"});
}, false);
port.onMessage.addListener(function(msg) {
document.getElementById('outputDiv').innerHTML = JSON.stringify(msg);
});
そして、Webページに次を使用します(好きな名前を付けます):
<!doctype html>
<html>
<head>
<title>webRequest Log</title>
</head>
<body>
<input type="button" value="Retrieve webRequest Log" id="theButton">
<div id="outputDiv"></div>
</head>
</html>