Как воссоздать document.getElementsByTagName из файла. js, используя python? - PullRequest
0 голосов
/ 09 мая 2020

Я хочу создать программу python, которая будет находить и загружать файлы из списка страниц, я обнаружил, что Chrome расширение Chrono Download Manager довольно эффективно для идентификации различных типов файлов. загружается на страницу для скачивания. Я хотел бы попытаться воссоздать эту функциональность в своей программе, чтобы я мог настроить, откуда он получает файлы и что он с ними делает.

В файлах Chrono Download Manager находится файл под названием sniffer. js (Sniffer - это раздел расширений, который идентифицирует файлы):

    chrome.runtime.onMessage.addListener(function(a) {
        switch (a.cmd) {
            case "g_links":
                a = function(a, g, h) {
                    if (a && g)
                        for (var c = 0, k = a.length; c < k; ++c) {
                            var e = a[c][g];
                            f.test(e) && void 0 == b[e] && (d.push({
                                url: e,
                                desc: a[c].download || "",
                                text: h ? a[c][h] || "" : "",
                                title: a[c].title || "",
                                referer: ""
                            }), b[e] = 1)
                        }
                };
                var d = [],
                    f = /^(((ftp|https?):\/\/)|(data:)).+$/i,
                    b = {};
                a(document.links, "href", "text");
                a(document.images, "src", "alt");
                a(document.getElementsByTagName("audio"), "src");
                a(document.getElementsByTagName("video"), "src");
                a(document.getElementsByTagName("source"), "src");
                a(document.getElementsByTagName("script"), "src");
                a(document.getElementsByTagName("link"), "href");
                0 < d.length && chrome.runtime.sendMessage({
                    cmd: "add_links",
                    data: d
                })
        }
    });
    document.addEventListener("mousedown", function(a) {
        function d(a) {
            for (; a && a.tagName;) {
                if ("a" == a.tagName.toLowerCase()) return a;
                a = a.parentNode
            }
            return null
        }

        function f(a) {
            for (; a;) {
                if (a.src) return a;
                a = a.parentNode
            }
            return null
        }
        if (0 <= a.button && 2 >= a.button) {
            var b = d(a.target);
            b && b.href && "j" != b.href[0] && chrome.runtime.sendMessage({
                cmd: "url_desc",
                url: b.href,
                download: (b.download || "").trim(),
                text: (b.text || "").trim(),
                title: (b.title || "").trim()
            });
            (a = f(a.target)) && a.src && chrome.runtime.sendMessage({
                cmd: "url_desc",
                url: a.src,
                download: (a.download || "").trim(),
                text: (a.alt || "").trim(),
                title: (a.title || "").trim()
            })
        }
    }, !0);

Я думаю, что sniffer. js файл - это часть, которая позволяет расширению находить файлы, если я прав, можно ли воссоздать это (например, часть a(document.getElementsByTagName("video"),"src");) в какой-либо форме, используя python, если да, то как мне это сделать это и что я должен прочитать? Могу ли я использовать такие вещи, как l xml, beautifulsoup и chromedriver?

Любая помощь и советы, которые вы можете дать, будут очень признательны.

Liam

...