рдХреНрд░реЛрдо рдЯреЗрд▓реАрдЧреНрд░рд╛рдо рдЕрд▓рд░реНрдЯ рдкреНрд▓рдЧрдЗрди рд▓рд┐рдЦрдирд╛



рдореБрд╕реАрдмрдд, рдХрд╛рдорд░реЗрдб!

рдмрдЪреНрдЪреЛрдВ (~ 10 рд╡рд░реНрд╖) рдиреЗ рджреВрд░рд╕реНрде рд╢рд┐рдХреНрд╖рд╛ рдкрд░ рд╕реНрд╡рд┐рдЪ рдХрд┐рдпрд╛, рдХрдВрдкреНрдпреВрдЯрд░ рдХреЗ рд╕рд╛рде рдХрдорд░реЗ рдореЗрдВ рдмреИрдареЗ рдФрд░ рдкрд╛рдареЛрдВ рдкрд░ рдзреНрдпрд╛рди рдХреЗрдВрджреНрд░рд┐рдд рдирд╣реАрдВ рдХрд░ рд╕рдХреЗ!

рдЙрдиреНрд╣реЗрдВ Google рдкрд░рд┐рд╡рд╛рд░реЛрдВ рдореЗрдВ рдЬреЛрдбрд╝рд╛ рдЬрд╛рддрд╛ рд╣реИ , Microsoft рдкрд░рд┐рд╡рд╛рд░ , рдХрдВрдкреНрдпреВрдЯрд░ рдкрд░ рд╕рдордп рд╕реАрдорд┐рдд рд╣реИ, рдФрд░ рд╡рдпрд╕реНрдХ рд╕рд╛рдЗрдЯреЗрдВ opendns рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╣рдЯрд╛ рджреА рдЬрд╛рддреА рд╣реИрдВ ред рд▓реЗрдХрд┐рди рд╕рд┐рд░реНрдл рдЗрддрдирд╛ рд╣реА - рдФрд░ рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдкрд╛рда рдХреЗ рдЬрд╝реВрдо рд╕рдореНрдореЗрд▓рди рдХреЗ рджреМрд░рд╛рди, рдмрдЪреНрдЪрд╛ рдпреВрдЯреНрдпреВрдм рджреЗрдЦрдирд╛ рд╢реБрд░реВ рдХрд░ рджреЗрддрд╛ рд╣реИред рдФрд░ рдлрд┐рд░ рд╢рд┐рдХреНрд╖рдХ рд╣реЛрдорд╡рд░реНрдХ рджреЗрддрд╛ рд╣реИ - рд╡реАрдбрд┐рдпреЛ рджреЗрдЦрдиреЗ рдФрд░ рдПрдХ рдирд┐рдмрдВрдз рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдПред рдФрд░ рд╡реАрдбрд┐рдпреЛ рднреА youtube рдкрд░ рд╣реИред рдореИрдиреБрдЕрд▓ рдореЙрдбрд░реЗрд╢рди рдЕрдкрд░рд┐рд╣рд╛рд░реНрдп рд╣реИред

рдмрд┐рд▓реНрд▓реА рдХреЗ рдиреАрдЪреЗ, рд╣рдо рдПрдХ рдЬрд╛рджреВ рдкреЗрдВрдбрд▓ рд▓рд┐рдЦрддреЗ рд╣реИрдВ, рдЬрд┐рд╕рдХрд╛ рдирд╛рдо рдХреНрд░реЛрдо рдкреНрд▓рдЧрдЗрди рд╣реИ, рдЬреЛ рдЯреЗрд▓реАрдЧреНрд░рд╛рдо рдореЗрдВ рдЦреЛрд▓реА рдЧрдИ рд╣рд░ рд╡реЗрдмрд╕рд╛рдЗрдЯ рдХреЛ рдЕрдЧрд▓реЗ рдХрдорд░реЗ рдореЗрдВ рдХрд╛рдо рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рджреБрд╖реНрдЯ рдорд╛рддрд╛-рдкрд┐рддрд╛ рдХреЗ рдкрд╛рд╕ рднреЗрдЬрддрд╛ рд╣реИред

рдмреЙрдЯ


рдкрд╣рд▓реЗ рд╣рдо рдЯреЗрд▓реАрдЧреНрд░рд╛рдо рдмреЙрдЯ рдХрд░реЗрдВрдЧреЗ рдФрд░ рдПрдХ рдЪреИрдирд▓ рдЬрд┐рд╕рдореЗрдВ рд▓рд┐рдВрдХ рдЖрдПрдВрдЧреЗред

  1. рдУрдкрди рдмреЛрдЯрдлрд╛рджрд░ , рд░рд╛рдЗрдЯ / рдиреНрдпреВрдмреЙрдЯ , рдмреЙрдЯрдЖрдИрдб (~ 50 рдЕрдХреНрд╖рд░реЛрдВ рдХрд╛ рд╕рдВрдпреЛрдЬрди) рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВред
  2. рд╣рдо рдПрдХ рдирдпрд╛ рдЪреИрдирд▓ рдмрдирд╛рддреЗ рд╣реИрдВ, рд╡рд╣рд╛рдВ рдПрдХ рдкреНрд░рд╢рд╛рд╕рдХ рдХреЗ рд░реВрдк рдореЗрдВ рдЕрдкрдирд╛ рдмреЙрдЯ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВред
  3. рд╣рдо рдЪреИрдирд▓ рдХреЛ рдХреБрдЫ рд▓рд┐рдЦрддреЗ рд╣реИрдВ, рд▓рд┐рдВрдХ рдХреЛ рдЦреЛрд▓реЗрдВ https://api.telegram.org/bot botId / getUpdates , рд╣рдореЗрдВ рд╡рд╣рд╛рдВ рдкрд░рд┐рдгрд╛рдо-> channel_post-> chat-> id рдорд┐рд▓рддрд╛ рд╣реИред

рдирддреАрдЬрддрди, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ botId рдФрд░ chatId рд╣реИ ред

рд▓рдЧрд╛рдирд╛


  1. рд╣рдо рдлрд╝реЛрд▓реНрдбрд░ рдмрдирд╛рддреЗ рд╣реИрдВ, рдЗрд╕рдореЗрдВ 2 рдлрд╛рдЗрд▓реЗрдВ рд╣реЛрдВрдЧреА - рдореЗрдирд┐рдлрд╝реЗрд╕реНрдЯ.рдЬреЗрдиреНрд╕рди рдФрд░ рдЗрдВрдбреЗрдХреНрд╕ред рдЬреЗрдПрд╕ред
  2. рдЗрд╕реЗ рдХрдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдХреНрд░реЛрдо рдкреНрд▓рдЧрдЗрди рдореЗрдирд┐рдлрд╝реЗрд╕реНрдЯ рдмрдирд╛рдПрдБ :

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

    рдпрд╣ рдпрд╣рд╛рдБ рдХрд╣рддрд╛ рд╣реИ рдХрд┐ index.js рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рдХрд┐рд╕реА рднреА рдкреЗрдЬ (рдорд┐рд▓рд╛рди: рд╕рднреА рдпреВрдЖрд░рдПрд▓) рдкрд░ рдПрдореНрдмреЗрдб рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред
  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).



20 рдорд┐рдирдЯ рдмрд┐рддрд╛рдП рдЧрдП рд╣реИрдВ, рдЕрдм рдЖрдк рдПрдХ рдФрд░ 20 рдШрдВрдЯреЗ рдмрд┐рддрд╛ рд╕рдХрддреЗ рд╣реИрдВ, рдПрдХ рдмреИрдХрдПрдВрдб рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдЖрдиреЗ рд╡рд╛рд▓реА рдХрдорд╛рдВрдбреЛрдВ (/ рдореНрдпреВрдЯ url, / рдореНрдпреВрдЯ 2h url рдЖрджрд┐) рдХреЗ рд░рд┐рд╕реЗрдкреНрд╢рди рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдкрдВрдЬреАрдХрд░рдг рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ, рдорд╛рд╕рд┐рдХ рд╕рджрд╕реНрдпрддрд╛, рд╕реБрд╕реНрдд рдФрд░ рд╣реИрдВрдЧрдЖрдЙрдЯ рдмреЙрдЯреНрд╕ рдХрд╛ рднреБрдЧрддрд╛рди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдФрд░ рдлрд┐рд░ рдХрд┐рд╕реА рднреА рдЕрдзрд┐рдХрд╛рд░ рдХреЗ рд▓рд┐рдП рд░реЗрдХ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдмрдЪреНрдЪреЛрдВ рдФрд░ рд╡реНрдпрдХреНрддрд┐рдЧрдд рдбреЗрдЯрд╛ред рдореИрдВ рдЗрди рд╕реБрдЦреЛрдВ рдХреЛ рдкрд╛рдардХ рддрдХ рдЫреЛрдбрд╝рддрд╛ рд╣реВрдВ, рдореЗрд░реЗ рдкрд╛рд╕ рд╕рдм рдХреБрдЫ рд╣реИред

All Articles