Форумы Форум www.proxomitron.ru
Все о программе Proxomitron
Главная  • FAQ для форума  •  Поиск  •  Пользователи  •  Группы   •  Регистрация  •  Профиль  •  Личные сообщения  •  Вход
 Фильтры для js
 Сайт -> Форумы » Помогите убрать баннер...
Следующая тема
Предыдущая тема

Новая тема  Ответить
Автор Сообщение
asgard
Newbee
Newbee


Зарегистрирован: 11.11.2015
Сообщения: 17

СообщениеДобавлено: Пн, Ноя 16 2015 21:26 Цитировать |  |  | 

Можно ли создать фильтр для изменения кода js, если сайт с этим js загружается через iFrame.
К началу Профиль Сообщение Отправить e-mail
chAlx
Moderator
Moderator


Зарегистрирован: 30.06.2004
Сообщения: 2621
Откуда: SPb

СообщениеДобавлено: Пн, Ноя 16 2015 23:54 Цитировать |  |  | 

Можно :)
К началу Профиль Сообщение
asgard
Newbee
Newbee


Зарегистрирован: 11.11.2015
Сообщения: 17

СообщениеДобавлено: Вт, Ноя 17 2015 00:13 Цитировать |  |  | 

chAlx писал(а):
Можно Smile

вот пример js:
site.com/js/main.js в нем нужно заменить кусок кода:
var id = Math.floor((Math.rand() * Array.length));
заменить на:
var id = Math.floor(*rand);

можете глянуть:
Код:
URL = "site.com/js/main.js"
Active = TRUE
Limit = 60
Match = "var id = Math.floor\(\(Math.rand\(\) * Array.length\)\);"
Replace = "var id = Math.floor\(*rand\);"
К началу Профиль Сообщение Отправить e-mail
chAlx
Moderator
Moderator


Зарегистрирован: 30.06.2004
Сообщения: 2621
Откуда: SPb

СообщениеДобавлено: Вт, Ноя 17 2015 00:58 Цитировать |  |  | 

На site.com нет такого ;)

Начнём с того, что фильтр должен проходить тест на коде, скопированном из реальной страницы (и не только нужный фрагмент, а побольше). И надо проверять, чтобы страница была "сырая", а не DOM-source, построенный браузером по своей внетренней модели после парсинга (как делает Мозилла, если выделить фрагмент страницы и просмотреть "исходник" фрагмента).

Если вопрос про фрейм, то надо смотреть, как он загружается: для скриптов используется много способов. Это даст конкретный URL, который надо обработать (либо отсутствие такового, если фрейм генерится другим скриптом).

Если URL верный, то следующая типичная проблема -- Content-Type.
Можно в логе посмотреть, как данный файл отдаётся: возможно, он и не фильтруется вовсе. Тогда надо будет добавить заголовочный фильтр, принуждающий Прокс фильтровать содержимое и такого типа (везде, с данного сайта или конкретный URL). Делается это командой $FILTER(); вроде, в дефолтном конфиге что-то такое было (в RussianEdition точно было).

Ещё вариант, почему рабочий фильтр не срабатывает -- мешают другие фильтры. Тут есть разные способы наладить взаимодействие, но для тестирования достаточно поместить свой фильтр в начало списка (чтобы он остальным мешал, а не наоборот;)
К началу Профиль Сообщение
chAlx
Moderator
Moderator


Зарегистрирован: 30.06.2004
Сообщения: 2621
Откуда: SPb

СообщениеДобавлено: Вт, Ноя 17 2015 01:03 Цитировать |  |  | 

Цитата:
floor(*rand)

А это вообще должно работать в JS?
К началу Профиль Сообщение
asgard
Newbee
Newbee


Зарегистрирован: 11.11.2015
Сообщения: 17

СообщениеДобавлено: Вт, Ноя 17 2015 01:09 Цитировать |  |  | 

chAlx писал(а):
Цитата:
floor(*rand)

А это вообще должно работать в JS?

вместо *rand будет рандомное значение
К началу Профиль Сообщение Отправить e-mail
asgard
Newbee
Newbee


Зарегистрирован: 11.11.2015
Сообщения: 17

СообщениеДобавлено: Вт, Ноя 17 2015 01:16 Цитировать |  |  | 

chAlx писал(а):
На site.com нет такого ;)

Код:
https://pliashkou.com/projects/random/js/main.js


сам iframe берется отсюда
Код:
https://pliashkou.com/projects/random/


я пробовал прописать js в на главной странице, но он не подключается у меня, если бы подключился, то можно было бы вставить кусок кода без изменения main.js
Код:
<script type="text/javascript"></script>
К началу Профиль Сообщение Отправить e-mail
asgard
Newbee
Newbee


Зарегистрирован: 11.11.2015
Сообщения: 17

СообщениеДобавлено: Чт, Ноя 19 2015 20:36 Цитировать |  |  | 

код немного изменился:

Код:
$(document).on('click', '.rollroulette', function () {
   var id = Math.floor((Math.random() * usersArray.length));
   view.setWinner(usersArray[id]);
   view.resizeWindow();
        })

нужно заменить только id на rand
К началу Профиль Сообщение Отправить e-mail
chAlx
Moderator
Moderator


Зарегистрирован: 30.06.2004
Сообщения: 2621
Откуда: SPb

СообщениеДобавлено: Чт, Ноя 19 2015 20:50 Цитировать |  |  | 

Общие вопросы мы обсудили: копируешь html в фильтр и подправляешь скобки. Для дальнейшего обсуждения нужен код фильтра, который не работает (и уточнение, как не работает: в тесте или только на реальном сайте).
К началу Профиль Сообщение
asgard
Newbee
Newbee


Зарегистрирован: 11.11.2015
Сообщения: 17

СообщениеДобавлено: Чт, Ноя 19 2015 21:06 Цитировать |  |  | 

chAlx писал(а):
Общие вопросы мы обсудили: копируешь html в фильтр и подправляешь скобки. Для дальнейшего обсуждения нужен код фильтра, который не работает (и уточнение, как не работает: в тесте или только на реальном сайте).


Код:
[Patterns]
Name = "Iframe 1"
Active = TRUE
Multi = TRUE
URL = "pliashkou.com/projects/random/js/main.js"
Limit = 32
Match = "view.setWinner\(usersArray[id]\)"
Replace = "view.setWinner(usersArray[rand])"


не работает, может что то забыл добавить.
К началу Профиль Сообщение Отправить e-mail
chAlx
Moderator
Moderator


Зарегистрирован: 30.06.2004
Сообщения: 2621
Откуда: SPb

СообщениеДобавлено: Пт, Ноя 20 2015 16:30 Цитировать |  |  | 

Квадратные скобки тоже надо экранировать бэкслешем (в Match).

ПС: Если не работает, пиши, в каком тесте (только на реальном сайте или в тестовом окне Прокса тоже).
К началу Профиль Сообщение
asgard
Newbee
Newbee


Зарегистрирован: 11.11.2015
Сообщения: 17

СообщениеДобавлено: Вт, Ноя 24 2015 22:27 Цитировать |  |  | 

chAlx писал(а):
Квадратные скобки тоже надо экранировать бэкслешем (в Match).

ПС: Если не работает, пиши, в каком тесте (только на реальном сайте или в тестовом окне Прокса тоже).


поменял на такое вариант
Код:
[Patterns]
Name = "Iframe 1"
Active = TRUE
Multi = TRUE
URL = "pliashkou.com/projects/random/js/main.js"
Limit = 32
Match = "view.setWinner\(usersArray\[id\]\)"
Replace = "view.setWinner(usersArray[rand])"


заработало) перезагрузил страницу.

только при загрузки через iframe не происходит замены.
К началу Профиль Сообщение Отправить e-mail
chAlx
Moderator
Moderator


Зарегистрирован: 30.06.2004
Сообщения: 2621
Откуда: SPb

СообщениеДобавлено: Ср, Ноя 25 2015 17:41 Цитировать |  |  | 

А где там фрейм?

При перезагрузке статики (к которой обычно относятся js, css) часто берётся версия из кеша. Так что при тестах reload имеет смысл делать с зажатым шифтом.
К началу Профиль Сообщение
asgard
Newbee
Newbee


Зарегистрирован: 11.11.2015
Сообщения: 17

СообщениеДобавлено: Чт, Ноя 26 2015 13:28 Цитировать |  |  | 

chAlx писал(а):
А где там фрейм?

При перезагрузке статики (к которой обычно относятся js, css) часто берётся версия из кеша. Так что при тестах reload имеет смысл делать с зажатым шифтом.

Это js подгружается через приложения Вконтакте посредством iframe и там видимо куки прописываются такого вида
Код:
pliashkou.com/projects/random/js/main.js&5555555
а у меня меняется js только у
Код:
pliashkou.com/projects/random/js/main.js
К началу Профиль Сообщение Отправить e-mail
chAlx
Moderator
Moderator


Зарегистрирован: 30.06.2004
Сообщения: 2621
Откуда: SPb

СообщениеДобавлено: Чт, Ноя 26 2015 22:24 Цитировать |  |  | 

asgard:

URL Match срабатывает по префиксу, так что любые продолжения урла не влияют.

Multi нужен для повторной фильтрации заменённого текста другими фильтрами. Тут это вряд ли актуально.

Может, там всё по https подгружается? Надо лог Прокса смотреть.
К началу Профиль Сообщение
asgard
Newbee
Newbee


Зарегистрирован: 11.11.2015
Сообщения: 17

СообщениеДобавлено: Пн, Ноя 30 2015 13:28 Цитировать |  |  | 

chAlx писал(а):
asgard:

URL Match срабатывает по префиксу, так что любые продолжения урла не влияют.

Multi нужен для повторной фильтрации заменённого текста другими фильтрами. Тут это вряд ли актуально.

Может, там всё по https подгружается? Надо лог Прокса смотреть.

Да, через https
К началу Профиль Сообщение Отправить e-mail
chAlx
Moderator
Moderator


Зарегистрирован: 30.06.2004
Сообщения: 2621
Откуда: SPb

СообщениеДобавлено: Пн, Ноя 30 2015 19:55 Цитировать |  |  | 

asgard писал(а):
Да, через https


Фильтровать https не так просто: его надо сперва корректно расшифровать. Вот обсуждения на эту тему:

http://proxomitron.ru/board/viewtopic.php?t=2128 (отдельной программой)
http://proxomitron.ru/board/viewtopic.php?t=1864
http://proxomitron.ru/board/viewtopic.php?t=1544
К началу Профиль Сообщение
Показать сообщения:      
 
Новая тема  Ответить

 Перейти:   




Следующая тема
Предыдущая тема
Вы можете начинать темы
Вы можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах


P o w e r e d b y p h p B B © p h p B B G r o u p :: T h e m e b a s e d o n FI T h e m e :: Часовой пояс: GMT + 3