JavaScript

Вопрос о подмене данных с сервера

К примеру, мы имеем страницу сайт. ру/file, в которой хранится {"status":false}. Как мне через расширение google chrome изменить в status значение на true исключительно на сайте сайт. ру?
Александр Чванов
Александр Чванов
172
Лучший ответ
Непосредственно редактировать ответы запросов нельзя.

Но можно:

а) Поднять специальный сервак, который будет работать как MITM-прокси.
А у расширений есть API, позволяющее перенаправлять на него запрос.
Важный момент - если там HTTPS, то и сервак тоже должен быть HTTPS.

б) Поднять полноценный прокси и настроить его в Chrome расширением. Но тут, насколько знаю, надо именно все запросы проксировать. А это даст кучу издержек. Тот же 2ip.ru станет неюзабелен.
Хотя, можно поднять локальный прокси, но все равно вроде бы некоторые серваки умеют распознавать.

в!) Если это AJAX-запрос, то можно создать хитроумную систему из контент-скрипта, который внедрится в страницу и поставит какие-то хуки, например, прямо на XMLHttpRequest, или на какую-то функцию из скриптов по мере ее загрузки (рекурсивный setTimeout поставит хук, как только она появится в поле видимости).
Таким образом можно внедряться во многое. Кроме разве что запросов из адресной строки. И еще местами возникают внезапные трудности. Например, полноценно имитировать keydown/keyup/... невозможно - если скрипт захочет, то он отличит его от настоящего, поэтому имитировать - никак, только изучить этот самый скрипт и что-то с ним сделать. Или вот - нельзя кросс-доменно получить base64 из уже загруженного img, если у него ДО загрузки картинки не стоит crossorigin="anonymous", а успеть поставить его до загрузки картинки - крайне проблематично, ибо нет спец. события, а редактировать HTML и прочие ответы запросов напрямую мы не можем.