Как вытащить URL активной вкладки из Chrome?

Всем добрый день!

Я пишу приложение Windows Forms на C# и пытаюсь вытащить в него URL из браузера (я использую Chrome). На текущий момент я нахожу процесс по имени при помощи соответствующего Hook'а, но вытащить URL не выходит. Решения, которые я нашла, работают разве что для старых версий Chrome. Насколько я понимаю, более адекватным вариантом будет использование Google Chrome Extention (их я, к сожалению, еще не писала, да и с js знакома очень поверхностно).

Сейчас Extension выглядит примерно так:

manifest.js:

{
"manifest_version": 3,
"name": "URL collector",
"version": "0.11",
"description": "Собирает URL посещенных ресурсов",
"permissions": [
    "tabs",
    "activeTab",
    "webNavigation",
    "scripting"
],
"background": {
    "service_worker": "background.js"
  },
"content_scripts": [
    {
        "matches": [
            "http://*/*",
            "https://*/*"
        ],
        "js": [
            "app.js"
        ]
    }
]}

background.js:

chrome.runtime.onInstalled.addListener(() => {
async function getCurrentTab() {
    let queryOptions = { active: true, lastFocusedWindow: true };
    let [tab] = await chrome.tabs.query(queryOptions);
    return tab;
}
alert(window.getCurrentTab());});

app.js:

chrome.tabs.query({active: true, lastFocusedWindow: true}, function(tabs) {
var tab = tabs[0];
console.log(tab.url);
alert(tab.url);});

Также пробовала такой код:

;(function() {
var pushState = history.pushState;
var replaceState = history.replaceState;

history.pushState = function() {
    pushState.apply(history, arguments);
    window.dispatchEvent(new Event('pushstate'));
    window.dispatchEvent(new Event('locationchange'));
};

history.replaceState = function() {
    replaceState.apply(history, arguments);
    window.dispatchEvent(new Event('replacestate'));
    window.dispatchEvent(new Event('locationchange'));
};

window.addEventListener('popstate', function() {
    window.dispatchEvent(new Event('locationchange'))
});})();

window.addEventListener('locationchange', function(){
    console.log('onlocationchange event occurred!');
    alert(chrome.tabs.getCurrent(tab => tab.url));})

Все варианты пробовала и в app.js, и в background.js. И либо я не поняла, как отследить срабатывание Extension, либо он не работает (скорее второе). Вообще, я пыталась отлавливать события изменения URL, например, переключения вкладок или перехода по ссылке. Ну, и пока что ничего не вышло. Собственно, первый вопрос заключается в следующем: как сделать такой Extension?

(Вообще, скорее всего, я тотально не понимаю тему, потому за ссылки на материалы по ней тоже буду крайне признательна)

Ну, и второй вопрос: как лучше передать URL в приложение Windows Forms?


Ответы (0 шт):