Schreiben eines Chrome-Telegramm-Alarm-Plugins



Das Problem, Genossen!

Kinder (~ 10 Jahre) wechselten zum Fernunterricht, saßen in Räumen mit Computern und können sich nicht auf den Unterricht konzentrieren!

Sie werden zu Google-Familien , Microsoft-Familien hinzugefügt , die Zeit am Computer ist begrenzt und Websites für Erwachsene werden durch Öffnen entfernt . Aber genau das - und sogar direkt während der Zoom-Konferenz des Unterrichts beginnt das Kind, Youtube zu schauen. Und dann gibt der Lehrer Hausaufgaben - um das Video anzusehen und einen Aufsatz zu schreiben. Und das Video ist auch auf Youtube. Manuelle Moderation ist unabdingbar.

Unter der Katze schreiben wir ein magisches Pendel, nämlich ein Chrome-Plugin, das jede im Telegramm geöffnete Website an einen bösen Elternteil sendet, der im Nebenzimmer arbeitet.

Bot


Zuerst erstellen wir einen Telegramm-Bot und einen Kanal, zu dem Links kommen.

  1. Öffnen Sie BotFather , schreiben Sie / newbot , erhalten Sie botId (eine Kombination von ~ 50 Zeichen).
  2. Wir erstellen einen neuen Kanal und fügen dort unseren Bot als Administrator hinzu.
  3. Wir schreiben etwas in den Kanal, öffnen den Link https://api.telegram.org/bot botId / getUpdates , dort finden wir result-> channel_post-> chat-> id.

Als Ergebnis haben wir botId und chatId .

Plugin


  1. Wir machen den Ordner, es werden 2 Dateien darin sein - manifest.json und index.js.
  2. Erstellen Sie ein Chrome-Plugin-Manifest , um dies zu minimieren:

    {
      "manifest_version": 2,
      "name": "Url Telegram Logger",
      "version": "1.0.0",
      "content_scripts": [
        {
          "matches": [
            "<all_urls>"
          ],
          "js": ["index.js"]
        }
      ]
    }
    

    Hier steht, dass das Skript index.js auf jeder Seite eingebettet wird (Übereinstimmungen: alle URLs).
  3. . SPA, document.location.href. MutationObserver. . , ( , ). ( , ). navigator.sendBeacon:

    const settings = {
      botId: '...',
      chatId: '...',
      userName: 'Matvey',
      pollingInterval: 10000
    }
    
    const mutedUrls = [
      'https://gmail.com',
      'https://www.eduka.lt',
      // .. ,   ..
    ]
    
    const sendMessage = (type, href) => {
      if (mutedUrls.find(url => href.startsWith(url))) { return false }
      const data = new FormData()
      data.append('chat_id', settings.chatId)
      data.append('text', `${settings.userName} ${type} ${document.title} ${href}`)
      navigator.sendBeacon(
        `https://api.telegram.org/bot${settings.botId}/sendMessage`, 
        data
      )
    }
    
    let latestHref = null
    let timeout = 0
    
    const run = () => {
      if (window.location.href !== latestHref) {
        latestHref = window.location.href
        sendMessage('opened', latestHref)
      }
      timeout && clearTimeout(timeout)
      timeout = setTimeout(run, settings.pollingInterval)
    }
    
    window.addEventListener('load', run)
    window.addEventListener('unload', () => sendMessage('closed', latestHref))
    
  4. ( chrome://extensions/, Developer mode, Load unpacked).



Es wurden 20 Minuten aufgewendet. Jetzt können Sie weitere 20 Stunden verbringen, ein Backend schreiben, den Empfang eingehender Befehle (/ stummschalten der URL, / stummgeschaltete 2-Stunden-URL usw.) konfigurieren, eine Registrierung hinzufügen, monatliche Abonnements bezahlen, Bots für Slack- und Hangouts erstellen und dann nach Rechten suchen Kinder und persönliche Daten. Ich überlasse diese Freuden dem Leser, ich habe alles.

All Articles