Ich habe eine Chrome-Erweiterung erstellt, die alle Links (URLs) aus allen geöffneten Tabs (Seiten/HTML) in Google Chrome extrahiert (scraped).
Warum ich das erstellen wollte
Ich habe mehrere Medien-Websites, und es gibt viele Seiten und Pages, bei denen die Monetarisierung nicht optimiert oder gut gepflegt ist. Ich dachte darüber nach, wie ich sie monetarisieren könnte - mit anderen Worten, welche Art von Affiliate-Anzeigen oder -Programmen optimal wären.
Nehmen wir an, es gibt einen Artikel (z.B. “Linux-Befehle verwenden [Für Anfänger]”). Es ist eine einfache Idee, aber ich dachte, wenn ich mit einer bestimmten Anfrage suchen könnte (z.B. “Linux Befehle”), alle Seiten crawlen könnte, die in den Suchergebnissen erscheinen, die Links bekommen und URLs filtern/extrahieren könnte, die wie Affiliate-ASP aussehen (z.B. nach “a8.net” oder nach “aff” filtern), könnte ich Hinweise bekommen, welche Programme andere Leute verwenden.
Wie das Tool funktioniert und Verwendung
Zuerst führen Sie das Skript aus.
Wenn das Skript läuft, ruft es automatisch Informationen von allen Tabs im aktiven Fenster (dem vordersten Fenster) ab, verarbeitet die Link-Extraktion, protokolliert es und beendet sich.

(Bildquelle links: “Webkaru”)
Wenn Sie das Objekt aus dem Log kopieren, wird es im JSON-Format kopiert.

Öffnen Sie das kopierte JSON in einem Texteditor und suchen Sie mit Strg-F.
Ich konnte mehrere a8.net-Links finden. Es gab auch Seiten, die moshimo (Moshimo Affiliate) und andere verwenden.
(Bildquelle rechts: “Kitsune no Wakusei”)

Diesmal habe ich Links extrahiert, aber alle Informationen im HTML können ohne Einschränkungen extrahiert werden. Sie können zum Beispiel auch alle Bild-URLs im HTML extrahieren.
Alternativ, wenn derselbe Link dupliziert ist, können Sie Duplikate entfernen oder zählen und statistische Informationen hinzufügen.
Tool zum Extrahieren aller Links aus allen geöffneten Tabs
Der vollständige Code ist wie folgt.
(async () => {
const sleep = m => new Promise(r => setTimeout(r, m));
const moment = (await import('https://cdn.jsdelivr.net/npm/[email protected]/+esm')).default;
const axios = (await import('https://cdn.skypack.dev/[email protected]')).default;
const URLParse = (await import('https://cdn.skypack.dev/[email protected]')).default;
const uuid = (await import('https://cdn.skypack.dev/@lukeed/[email protected]')).v4;
const jsyaml = (await import('https://cdn.skypack.dev/[email protected]')).default;
const script = (await axios.get(`http://localhost:8080/web/lib/utils.js?ts=${(+new Date())}`)).data;
eval(script);
app.console.setLogPrefix("[Link Scraper]");
app.console.warn("waiting... (a window)");
let activeWindowTabs;
for (;;) {
activeWindowTabs = await ChromeUtils.getActiveWindowTabs();
await sleep(200);
if (activeWindowTabs.length >= 1) break;
}
app.console.info({activeWindowTabs, });
let detailedTabs = [];
for (let tab of activeWindowTabs) {
let outerHTML = await ChromeUtils.exec(tab.id, `document.documentElement.outerHTML`);
outerHTML = outerHTML?.[0];
const parser = new DOMParser();
const doc = parser.parseFromString(outerHTML, 'text/html');
let links = Array.from(doc.getElementsByTagName('a')).map(link => link.href);
let linksWithTexts = Array.from(doc.getElementsByTagName('a')).map(link => { return { text: link.innerText, link: link.href }})
detailedTabs.push({
...tab,
linksWithTexts,
});
}
app.console.info(detailedTabs)
app.console.info("y.");
})();
(Das Produkt enthält meine benutzerdefinierte Bibliothek, die im obigen Code nicht enthalten ist, aber Abhängigkeiten damit hat.)
Zusammenfassung
Mit diesem Tool können Sie alle Links aus allen geöffneten Tabs extrahieren. Sie können es zum Beispiel verwenden, um zu untersuchen, welche Affiliate-Programme andere Leute verwenden, welche Anzeigen sie schalten usw. Es gibt wahrscheinlich auch viele andere Verwendungsmöglichkeiten.