Андрей Смирнов
Время чтения: ~10 мин.
Просмотров: 0

Внедрение Javascript-кода в страницу через Chrome Extension

Форум </th> Темы </th> Сообщения </th> Последнее сообщение </th></tr>    Общие вопросы </td></tr></td>Общие вопросы  (15 просматривают) Лицензирование, законодательство, юридическая значимость etc. </td> 2,153 </td> 16,372 </td>Про и Api  Андрей ПисаревСегодня в 15:35:41(UTC)</td></tr></td>FAQ Ответы на часто задаваемые вопросы </td> 11 </td> 16 </td>Где найти информацию по судебной практике с ЭЦП  Юрий Маслов13.04.2012 16:44:44(UTC)</td></tr></td>Работа в компании КриптоПро и не только Вакансии и вопросы трудоустройства специалистов по информационной безопасности Подфорумы:Архив</td> 53 </td> 116 </td>Android разработчик  Наталья Мовчан30.07.2019 16:48:34(UTC)</td></tr></td>Изменения в продуктах КриптоПро Описания вносимых изменений в продукты </td> 25 </td> 154 </td>Как обновить КриптоПро 3,9 до 4,0?  Андрей Писарев29.04.2019 19:44:29(UTC)</td></tr>    Средства криптографической защиты информации </td></tr></td>КриптоПро NGate Обсуждение высокопроизводительного VPN-шлюза на базе протокола TLS </td> 12 </td> 32 </td>Существует ли инструкция по создания…  Андрей Куликов10.09.2019 13:29:58(UTC)</td></tr></td>Android Продукты КриптоПро для платформы Google Android </td> 93 </td> 498 </td>Запретить загрузку тестовых сертификатов  Евгений Афанасьев12.09.2019 12:32:07(UTC)</td></tr></td>Apple  (2 просматривают) Продукты КриптоПро для платформ Apple (Mac OS, iOS) </td> 442 </td> 3,266 </td>Ошибки при задании пароля длиной более 8…  Агафьин Сергей09.09.2019 12:14:57(UTC)</td></tr></td>КриптоПро CSP и вирусы/антивирусы  (1 просматривают) Обсуждение проявлений вредоносного ПО </td> 27 </td> 323 </td>CryptoPro CSP (4 и 5) и Symantec Endpoint…  Илья Харченко17.07.2019 8:52:51(UTC)</td></tr>5.0.png</td>КриптоПро CSP 5.0  (19 просматривают) Высказываем пожелания к перспективному продукту </td> 119 </td> 805 </td> Крипто про 5 не устанавливается  Андрей 321Вчера в 22:51:11(UTC)</td></tr></td>КриптоПро CSP 4.0  (42 просматривают) Обсуждение КриптоПро CSP 4.0 </td> 1,229 </td> 7,130 </td>Помогите реализовать подобное?  Максим КоллегинСегодня в 16:47:30(UTC)</td></tr></td>КриптоПро CSP 3.9  (3 просматривают) Обсуждение КриптоПро CSP 3.9 </td> 423 </td> 3,134 </td> AstraLinux КриптоПро zakupki.gov.ru авторизация…  two_oceansВчера в 12:46:39(UTC)</td></tr></td>КриптоПро CSP 3.6  (1 просматривают) Обсуждение КриптоПро CSP 3.6 </td> 2,261 </td> 14,044 </td>Проблема с сертификатами корневыми и тд.  Александр Лавник26.08.2019 12:05:41(UTC)</td></tr></td>Linux, Solaris etc.  (4 просматривают) Продукты для *nix* платформ </td> 445 </td> 2,973 </td>Линукс.КриптоПро 4 R4.Не подписывает на…  celigorСегодня в 15:22:09(UTC)</td></tr></td>КриптоПро JCP, JavaTLS  (4 просматривают) Обсуждение Java платформы </td> 1,346 </td> 8,759 </td> TLS с ГОСТ 2012 на JDK 1.8  mor_crazy79Сегодня в 15:54:39(UTC)</td></tr></td>КриптоПро .NET  (4 просматривают) Криптография в .NET (ex-Sharpei) </td> 652 </td> 4,806 </td> Запрос к ГИС ЖКХ с ключом ГОСТ2012  oleg_kashinВчера в 14:01:02(UTC)</td></tr></td>КриптоПро ЭЦП (усовершенствованная ЭЦП)  (6 просматривают) Обсуждение CAdES, Browser plug-in, TSP, OCSP etc. </td> 1,265 </td> 9,040 </td>удалили файлы сертификата  zarechye_terСегодня в 12:33:52(UTC)</td></tr></td>КриптоПро PDF  (2 просматривают) Обсуждение КриптоПро PDF </td> 178 </td> 1,304 </td>Подписать документ пдф и отдельный файл с…  Андрей ПисаревВчера в 19:26:00(UTC)</td></tr></td>КриптоПро EFS Обсуждение КриптоПро EFS </td> 12 </td> 50 </td>Знакомство с EFS  Дмитрий Пичулин12.04.2018 11:00:52(UTC)</td></tr></td>КриптоПро IPsec Обсуждение КриптоПро IPSec для Windows и других платформ </td> 31 </td> 338 </td> не работает ipsec на win10 сборка 1903  Regis12.09.2019 14:17:24(UTC)</td></tr></td>КриптоПро Office Signature  (1 просматривают) Обсуждение XMLDSig плагина для MS Office 2007/2010 </td> 98 </td> 633 </td>Версия 1.0 не подписывает Office2007, а версия…  Игорь Александрович19.08.2019 10:57:57(UTC)</td></tr></td>КриптоПро DSS  (2 просматривают) Обсуждение КриптоПро DSS </td> 104 </td> 652 </td>Не открывается кабинет оператора DSS  Грибанов АнтонСегодня в 16:58:05(UTC)</td></tr></td>КриптоПро SVS Обсуждение сервиса проверки подписи </td> 24 </td> 82 </td>Снятие подписи  Грибанов Антон05.09.2019 8:56:35(UTC)</td></tr></td>Встраивание  (1 просматривают) CryptoAPI, CAPICOM </td> 1,123 </td> 7,103 </td>Изменение/сброс пароля через API  Андрей ПисаревВчера в 19:27:22(UTC)</td></tr></td>Другие продукты  (4 просматривают) HSM, Winlogon, cryptcp, ЭЦП процессор etc. </td> 466 </td> 3,566 </td>WinHttpRequest и Zakupki.gov.ru и сертификаты с…  Дмитрий ПичулинСегодня в 16:21:50(UTC)</td></tr></td>Open Source  (1 просматривают) Open Source продукты КриптоПро </td> 37 </td> 342 </td>Ошибка при установке защищенного соединения…  Санчир Момолдаев06.09.2019 21:36:34(UTC)</td></tr>    КриптоПро УЦ </td></tr></td>СМЭВ и ЕСИA  (1 просматривают) Вопросы подключения и передачи данных </td> 22 </td> 241 </td>КриптоПро Шлюз УЦ-СМЭВ  Захар Тихонов17.09.2019 13:58:33(UTC)</td></tr></td>КриптоПро УЦ 1.5 Обсуждение текущей версии КриптоПро УЦ </td> 762 </td> 5,149 </td> Ошибки на странице запроса сертификата  thelearning27.08.2019 11:05:24(UTC)</td></tr></td>КриптоПро УЦ 2.0  (7 просматривают) Обсуждение новой версии КриптоПро УЦ </td> 654 </td> 5,978 </td>Длинное значение CN  Захар ТихоновВчера в 13:27:51(UTC)</td></tr>    Средства защиты информации </td></tr></td>Secure Pack Rus Средство защиты информации Secure Pack Rus </td> Нет сообщений </td></tr>    Устаревшие продукты </td></tr></td>КриптоПро УЭК CSP  (2 просматривают) Обсуждение криптопровайдера для УЭК </td> 53 </td> 790 </td>Работа плагина для портала Госуслуг в Google…  Русев Андрей03.02.2018 14:40:16(UTC)</td></tr></td>КриптоПро CSP 3.0  (1 просматривают) Обсуждение КриптоПро CSP 3.0 </td> 791 </td> 4,186 </td>В чем отличия KC1 и KC2 версий продукта  Русев Андрей16.02.2018 21:48:38(UTC)</td></tr></td>КриптоПро CSP 2.0, 1.1 Обсуждение КриптоПро CSP 2.0, 1.1 </td> 210 </td> 1,067 </td>Перенос на другой компьютер  aXiEd12.12.2016 11:52:19(UTC)</td></tr></td>КриптоПро УЦ 1.4 Обсуждение предыдущих версий КриптоПро УЦ </td> 432 </td> 2,462 </td>Помогите разобраться с CERTUTIL  dmitrygis13.12.2016 7:44:36(UTC)</td></tr>Отметить все форумы как прочитанные | RSS ЛентаAtom Лента</td></tr>Asked8 months agoActive8 months agoViewed 2k times 2

I am facing a wierd problem accessing the Chromecast extension in Chrome.

I made a web page and when the user press connect it call the Cast Api and open the dialog to connect to a Chromecast.

In some pcs it doesn’t work the error that appears is:

chrome-extension://invalid Failed to load resource: net::ERR_FAILED

The error just occurs in Windows in non administrator accounts.

I thought it was the proxy, or the company network firewall, but it wasn’t we tested without the proxy and the error occurs.

If the account is a Windows Administrator it works!

My guess is that the Chrome or Windows is blocking the access to the extension because is a javascript calling the cast.js and the cast.js calls extension (Maybe CORS).

My website has https. I set in Internet Options as a trusted site. In old Chromes the error is different:

GET chrome-extension://pkedcjkdefgpdelpbcmbmeomcjbeemfm/cast_sender.js net::ERR_FAILED

Does anyone know how to fix it(chrome-extension://invalid)?

oCBri.jpg

|improve this question

1 Answer 1

active oldest votes1

I discovered what happened. The corporate network is protected by their proxy.

We monitored the calls and discovered that: The cast lib tries to call the cast extension «pkedcjkdefgpdelpbcmbmeomcjbeemfm», which is not installed at %appdata% folder.

The Chrome tries to download it at: gvt1.com and the network blocked this domain. After talking to the network administrator, we released the domain and it worked.

|improve this answer

Not the answer you’re looking for? Browse other questions tagged or ask your own question.

lang-jsОднажды передо мной встала задача написать расширение для одной браузерной игрушки под Google Chrome. Для расширения необходимо было использовать javascript окружение непосредственно самой страницы. Проблема оказалась в том, что доступ к этому окружению невозможен из Content-скриптов расширения. В результате поисковой работы обнаружилось что удачные решения данной проблемы отсутствуют, поэтому изучив имеющийся материал была создана простенькая система, позволяющая внедрить любой код непосредственно в станицу, без дополнительных мучений в процессе разработки. Далее я представлю простой пример расширения, решающего эту задачу. Идея основана на копировании содержимого файла скрипта непосредственно в тег

 страницы. Несмотря на всю простоту решения, я не нашел никаких примеров, либо упоминаний о нем на тот момент.    Итак состав нашего будущего расширения таков:  

manifest.json - стандартный файл описания расширения</li> background.js - content script, загружающий внедряемый код</li> injected.js - непосредственно внедряемый код</li> jquery.js - используется для получения содержимого файла скрипта через ajax. Подробную информацию можно найти на сайте jquery.com</li> </ul> Рассмотрим подробнее содержимого каждого из файлов: manifest.json { "name": "JS Code Injection", "version": "1.0", "manifest_version": 2, "content_scripts": [ { "matches": [ "http://extension.target.url" ], "js": [ "jquery.js", "background.js" ], "run_at": "document_end" } ], "web_accessible_resources": [ "/injected.js" ] } Ничем не отличается от manifest-файла из примеров. Обратите внимание, что файл с внедряемым кодом injected.js описан в разделе web_accessible_resources, для того чтобы позднее получить к нему доступ из content-скрипта. injected.js

function injected_main() { alert('Injected!'); } 

Внедряемый файл содержит все то, что вы хотите включить в страницу. Здесь вы уже можете использовать локальное javascript окружение страницы, в которую вы внедряете код.background.js

$.get(chrome.extension.getURL('/injected.js'),  function(data) { var script = document.createElement("script"); script.setAttribute("type", "text/javascript"); script.innerHTML = data; document.getElementsByTagName("head")[0].appendChild(script); document.getElementsByTagName("body")[0].setAttribute("onLoad", "injected_main();"); } ); 

Мы используем стандартную функцию Chrome Extension API chrome.extension.getURL(), которая возвращает путь, локальный для расширения. </li>Далее мы запрашиваем данный файл через ajax и после успешного получения создаем новый элемент в основной странице (Благодаря Shared DOM мы можем манипулировать элементами страницы без лишних усилий)</li>Последним пунктом мы устанавливаем функцию, которая будет вызвана после загрузки страницы (функция injected_main() описана в файле injected.js)</li></ol> Вот собственно и все. Достоинством данного метода я считаю простоту в реализации (минимум лишнего кода), а главное - вы можете легко редактировать внедряемый код. Для отображения изменений необходимо просто перезагрузить страницу - обновленный injected.js будет сразу подхвачен расширением.10070.5k 100Используемые источники:

  • https://www.cryptopro.ru/forum2/default.aspx
  • https://stackoverflow.com/questions/55425009/why-am-i-getting-this-error-chrome-extension-invalid
  • https://m.habr.com/post/147111/

Рейтинг автора
5
Подборку подготовил
Максим Уваров
Наш эксперт
Написано статей
171
Ссылка на основную публикацию
Похожие публикации