Смотрите видео ниже, чтобы узнать, как установить наш сайт в качестве веб-приложения на домашнем экране.
Примечание: Эта возможность может быть недоступна в некоторых браузерах.
Вы используете устаревший браузер. Этот и другие сайты могут отображаться в нём некорректно. Вам необходимо обновить браузер или попробовать использовать другой.
Добрый день ув. форумчане. Столкнулся с необходимостью подменить загрузку .js, как это можно реализовать? Смотрел в кубиках, ничего не нашел, может быть плохо искал. + Было бы не плохо, если б еще поделились информацией как можно заблокировать загрузку определенного скрипта на странице (не все скрипты). Надеюсь на вашу помощь. Спасибо.
Это не один скрипт, их большое количество. В основном те, которые нагружают интернет, браузер, скрипты всячески контролирующие меня. Подключают отдельным файлом, либо прописывают на страницах. Да, я бы мог отключить полностью JS, но есть и полезные, без которых сайты нормально не функционирует. Так же бывают случаи когда меня не совсем устраивает ответ браузеру от скрипта, в этом случае хотелось бы сделать подмену на свой скрипт, отрабатывающий так, как нужно мне.
Если блокировка через политику содержимого не подходит, есть метод ChangeResponse.
Вот пример из документации:
C#:
instance.ChangeResponse("http://lessons.zennolab.com/en/index",
new List<string>
{
"(?<=<input type=\"checkbox\" class=\"inputs\"><h2> ).*(?=</h2>)",
"(?<=<textarea rows=\"5\" cols=\"45\" name=\"text\">).*(?=</textarea>)",
"<h2>Any text:</h2>"
},
new List<string>
{
"no OS",
"NEW TEXT TO TEXTAREA",
"<h2>NEW HEADER TO TEXTAREA:</h2>"
});
Первый аргумент (в коде выше - "http://lessons.zennolab.com/en/index") - это урл, на котором надо произвести замену содержимого. Тут можно использовать регулярку.
Второй аргумент - список регулярок
В коде выше это:
По данным регуляркам будет производится поиск данных, которые подлежат замене.
Третий аргумент - данные, которыми будут заменены исходные значения.
В коде выше это:
C#:
new List<string>
{
"no OS",
"NEW TEXT TO TEXTAREA",
"<h2>NEW HEADER TO TEXTAREA:</h2>"
}
Есть ещё четвёртый (bool - true, false), необязательный, аргумент - насколько я понял с его помощью можно указать заменять ли данные только в следующем запросе или постоянно. По умолчанию стоит false - только в след. запросе.
Кол-во элементов в списках, во втором и третьем аргументах, должно совпадать.
Ставим данный экшен перед переходом на нужную страницу и подменяем данные.
Приветы, форумчане.
Решил применить предложенный метод ChangeResponse , но результат отрицательный. Кто-нибудь на практике его тестировал? Он вообще работает?
Вот мой код (на основе того, что в документации).
Пытаюсь заменить содержимое заголовков h1 и h2.
C#:
instance.ChangeResponse("http://lessons.zennolab.com/en/index",
new List<string>
{
"(?<=<h1>).*(?=</h1>\t)",
"(?<=<h2>).*(?=</h2>\t)"
},
new List<string>
{
"MY HEADER H1",
"MY CUSTOM HEADER H2"
}, true);
Tab tab = instance.ActiveTab;
if ((tab.IsVoid) || (tab.IsNull)) return -1;
if (tab.IsBusy) tab.WaitDownloading();
tab.Navigate("lessons.zennolab.com", "");
if (tab.IsBusy) tab.WaitDownloading();
Адрес, который используется для поиска содержит /en/index , а при переходе по адресу lessons.zennolab.com попадаем на страницу /ru/index. Поэтому и не работает.
@nicanil подскажи пожалуйста почему эта штука не работает?
Решил потыркаться и попробовать, что это такое, тупо решил заменить на странице Яндекса слово "Погода" на "Пагода"
C#:
instance.ChangeResponse("https://yandex.ru",
new List<string>
{
"Погода"
},
new List<string>
{
"Пaгода"
});
Tab tab = instance.ActiveTab;
if ((tab.IsVoid) || (tab.IsNull)) return -1;
if (tab.IsBusy) tab.WaitDownloading();
tab.Navigate("https://yandex.ru", "");
if (tab.IsBusy) tab.WaitDownloading();
И как была там "Погода" так "Погода " и осталась после выполнения кубика! Что не так?
@nicanil подскажи пожалуйста почему эта штука не работает?
Решил потыркаться и попробовать, что это такое, тупо решил заменить на странице Яндекса слово "Погода" на "Пагода"
C#:
instance.ChangeResponse("https://yandex.ru",
new List<string>
{
"Погода"
},
new List<string>
{
"Пaгода"
});
Tab tab = instance.ActiveTab;
if ((tab.IsVoid) || (tab.IsNull)) return -1;
if (tab.IsBusy) tab.WaitDownloading();
tab.Navigate("https://yandex.ru", "");
if (tab.IsBusy) tab.WaitDownloading();
это меняет данные в запросах. если не поменял значит эти данные пришли не через запросы с этой регуляркой. а может даже и вообще не через запросы, так как в мониторе есть сокеты.
в общем надо ловить конкретный запрос и глазами там видеть те данные которые надо поменять.
я в принципе и хотел что-то подобное сделать, думал этот метод уже на сформированной странице проведет замену если URL совпали, хотя название метода нам как-бы намекает что замена идет в содержимом запроса .
@nicanil у меня дикое желание разобраться с этим методом, даже в поддержку писал, а она что-то молчит .
Пробую пример попроще разобрать на примере сайта зеннолаба
C#:
instance.ChangeResponse("zennolab.com",
new List<string>
{
"index"
},
new List<string>
{
"index1"
});
Tab tab = instance.ActiveTab;
if ((tab.IsVoid) || (tab.IsNull)) return -1;
if (tab.IsBusy) tab.WaitDownloading();
tab.Navigate("https://lessons.zennolab.com/en/index", "");
if (tab.IsBusy) tab.WaitDownloading();
Подумал типо может только какое-то первое совпадение меняет, а потом уже нет. Смотрю итоговый код страницы, там 3 совпадения нигде замены нет! Раздери меня гром, как должна работать эта штука?
P.S хм, блин ну почему так, решил настройки браузера поменять, что-то перегенерировал и сработало
В 1-ой строке вашего кода подставьте полный адрес вместо домена: https://lessons.zennolab.com/en/index
Или хотя бы прописать его с субдоменом и протоколом.
мой код тоже оказался рабочим, надо просто true добавить 3-им параметром, чтобы он всегда срабатывал, а то я же получается на сгенерированном профиле заходил на zennolab потом пробовал протестить метод, а с параметром false там же только первая попытка срабатывает и похоже моя проблема в этом была.
А более сложная логика возможна? У меня с клиента отправляется запрос в base64, мне нужно его словить, распаковать, подменить некоторые значения, упаковать обратно и отправить новый запрос
А более сложная логика возможна? У меня с клиента отправляется запрос в base64, мне нужно его словить, распаковать, подменить некоторые значения, упаковать обратно и отправить новый запрос