как заменить узел javascript перед загрузкой страницы

#javascript

#javascript

Вопрос:

Я пытаюсь создать расширение Chrome, которое удалит / заблокирует / скроет фрагмент javascript, чтобы он не загружался при просмотре определенного веб-сайта. Рассматриваемый код находится здесь:

 <script type="text/javascript">
var _0xd6Bh=["x74x6Fx70","x67x74x74x50x3Ax2Fx2Fx76x69x64x65x6Fx2Ex73x77x61x67x62x75x63x6Bx73x2Ex63x6Fx6Dx2Fx62x6Cx6Fx62x6Bx2Exv8x74x6Dx6C"];if(window[_0xd6Bh[0]]!=window){location=_0xd6Bh[1];} ;
</script>
 

Я не уверен, что это правильный подход, но вот мой код:

 document.write(string.replace(/var _0xd6Bh=[".*/g, XXX));
 

Итак, идея состоит в том, чтобы заменить javascript на XXX перед загрузкой страницы и в конечном итоге предотвратить его выполнение. Пока это не работает, и страница продолжается, что я делаю не так?

Ответ №1:

Если тег script находится в заголовке, следующий код должен направить вас на правильный путь. Если он есть в теле, просто замените document.head на document.body . Вы, конечно, можете перебрать

 var scripts = document.head.getElementsByTagName("script");
/* //Uncomment the code below if you want to add body script elements
var bodyScripts = document.body.getElementsByTagName("script");
scripts.concat(bodyScripts);
*/
var replaceWithThis = "var _0xd6Bh = '';";
for(var i=0, l=scripts.length; i<l; i  )
{
    scripts[i].innerHTML.replace(/^var _0xd6Bh.*/gi, replaceWithThis)
}
 

Комментарии:

1. в этой строке string replaceWithThis = "var _0xd6Bh = '';"; я получаю сообщение об ошибке

2. извините, должен быть var: var replaceWithThis = "var _0xd6Bh = '';";

3. я не уверен, что он работает правильно. вы можете протестировать его здесь jsbin.com/uvujam/3/edit

4. Я посмотрел на код jsbin. К сожалению, вы не можете получить доступ к iframe в этом примере, поскольку это другой домен. У меня нет большого опыта работы с расширениями Chrome, но если это возможно сделать с расширениями, вам в основном придется обращаться к HTML перед запуском JS. Даже тогда я не уверен, возможно ли это.