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

Внедрение 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 ago
Active8 months ago
Viewed 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 votes
1

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 будет сразу подхвачен расширением.

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