@MikMik

Как изменить локальную переменную?

Есть код страницы на чужом сайте, например такой
function(){
var x=5;
//тут еще какой-то код...
}

Подскажите какие есть обходные пути изменить переменную х причем до выполнения этой функции.
Может можно как то перехватить загружаемый скрипт и подменить значение?
Значение должно подменяться только на локальной машине (в браузере) и не требуется ее сохранение на сервере
  • Вопрос задан
  • 165 просмотров
Решения вопроса 1
dollar
@dollar
Делай добро и бросай его в воду.
Если это глобальная функция, то расширение Tampermonkey. Ещё зависит от "тут еще какой-то код", потому что можно подменить всю функцию целиком, а можно подменить функцию, которая использует функция и т.д. Ну и ещё важно успеть подменить до того, как она будет вызвана, так что это тоже накладывает свои ограничения на способ инжекта. Если же всё завёрнуто в анонимную обёртку, то это мёртвый номер, хотя иногда и можно кое-как схитрить через манипуляцию с DOM, но это опять же от кода зависит.

Иначе в ход идёт тяжелая артиллерия - приложение Fiddler. С его помощью сможете локально в вашем личном браузере подменить любую часть скрипта перед его выполнением. Но потребуется время на освоение этой софтины.

Обычно нужно просто заблокировать скрипт или элемент на чужом сайте. Подозреваю, что именно это, а не то что вы задумали, может быть на самом деле простым решением. Для этого подойдут современные блокировщики рекламы. Лучший на сегодня - uBlock Origin.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
Vlad_IT
@Vlad_IT Куратор тега JavaScript
Front-end разработчик
Подмените функцию, это гораздо проще.
Ответ написан
Комментировать
profesor08
@profesor08 Куратор тега JavaScript
Как вариант, можешь поставить расширение для браузера Requestly, и указать редирект для скрипта на свой хост, где будет "правильный" код. Либо как указали выше, переопределить функцию, но похоже тебе надо сделать это до ее выполнения, потому без расширения никак.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы