Приветствую! Может кто-нибудь подсказать, как инжектировать js скрипт(который представлен в виде строки, т.е. выполнить код из строки), из контент скрипта расширения, в сайт со строго настроенным CSP. Манифест расширения, третьей версии.
Насколько я знаю, варианты tabs.executeScript и scripting, chrome будет выполнять не обращая внимания на СSP. И было бы все отлично, но))Попробуй chrome.scripting API или chrome.tabs.executeScript с опцией {code: 'jsCode'}
С этими новыми манифестами V3 все не так просто как раньше.Насколько я знаю, варианты tabs.executeScript и scripting, chrome будет выполнять не обращая внимания на СSP. И было бы все отлично, но))
tabs.executeScript и правда выполняет код строки, только проблема в том что это 2 манифест. У меня третий, и переходить назад не хочется.
вариант со scripting, идет выполнение не строки, а именно кода. И засунуть eval, setTimeout итд не получится, так как CSP сразу же режет эти варианты.
Вот насчет webRequest, там нужны еще права webRequestBlocking, что тоже было во втором манифесте. В третьем нету. Там порезали эти привелегии и теперь прямого доступа к запросам нет, во втором манифесте можно просто стопить все запросы и удалять с хедеров csp политику... И уже потом соотвественно инжектить как хочешь... В третьем манифесте, работа уже идет с правилами, там тоже можно задать правила для обработки заголовков, но что-то не стабильно это работает, не всегда и не везде меняет, хз почему.С этими новыми манифестами V3 все не так просто как раньше.
я бы попробовал так: делаешь перехват запросов через webRequest, и прям в полете подменяешь скрипты. Или вставляешь теги напрямую в DOM. Это должно сработать.
Если нет - можно пойти хитрее. Замаскировать код, накрутить обфускацию. Или вообще все сделать локально в расширении, без инъекций.