Search code examples
javascriptgoogle-chromegoogle-chrome-extension

onBeforeSendHeaders does not work with Chrome desktop shortcut


A simple Chrome extension that enables Youtube TV on my Raspberry Pi 4: Source

background.js

const config = {
  userAgent: 'Mozilla/5.0 (SMART-TV; Linux; Tizen 5.0) AppleWebKit/538.1 (KHTML, like Gecko) Version/5.0 NativeTVAds Safari/538.1'
}

function changeUserAgent (request) {
  for (let header of request.requestHeaders) {
    if (header.name.toLowerCase() === "user-agent") header.value = config.userAgent
  }

  return { requestHeaders: request.requestHeaders }
}

chrome.webRequest.onBeforeSendHeaders.addListener(changeUserAgent, {urls: ["*://*.youtube.com/tv*"]}, ["blocking", "requestHeaders"]);

manifest

{
  "manifest_version": 2,

  "name": "YouTube TV for Browser",
  "description": "Enables YouTube TV for traditional browser",
  "version": "0.1",

  "permissions": [
    "webRequest",
    "webRequestBlocking",
    "*://*.youtube.com/tv*"
  ],

  "background": {
    "scripts": [
      "background.js"
    ]
  },
  "browser_action": {
    "default_title": "YouTube TV for Browser"
  }
}

However, when I create a desktop shortcut and open Youtube from it (with no other Chrome process running), the script doesn't load (which will redirect me to normal youtube.com) until I manually refresh the page.

My question is: How can I load the script before Chrome send a request, or right after the shortcut opened.


Solution

  • Solved it by not solving it. Modify --user-agent in shortcut properties instead, detail here.

    --user-agent="Mozilla/5.0 (X11; Linux i686) AppleWebKit/534.24 (KHTML, like Gecko) Chrome/11.0.696.77 Large Screen Safari/534.24 GoogleTV/092754 Mozilla/5.0 (X11; Linux i686) AppleWebKit/534.24 (KHTML, like Gecko) Chrome/11.0.696.77 Large Screen Safari/534.24 GoogleTV/092754"