JavaScript
Вопрос о подмене данных с сервера
К примеру, мы имеем страницу сайт. ру/file, в которой хранится {"status":false}. Как мне через расширение google chrome изменить в status значение на true исключительно на сайте сайт. ру?
Непосредственно редактировать ответы запросов нельзя.
Но можно:
а) Поднять специальный сервак, который будет работать как MITM-прокси.
А у расширений есть API, позволяющее перенаправлять на него запрос.
Важный момент - если там HTTPS, то и сервак тоже должен быть HTTPS.
б) Поднять полноценный прокси и настроить его в Chrome расширением. Но тут, насколько знаю, надо именно все запросы проксировать. А это даст кучу издержек. Тот же 2ip.ru станет неюзабелен.
Хотя, можно поднять локальный прокси, но все равно вроде бы некоторые серваки умеют распознавать.
в!) Если это AJAX-запрос, то можно создать хитроумную систему из контент-скрипта, который внедрится в страницу и поставит какие-то хуки, например, прямо на XMLHttpRequest, или на какую-то функцию из скриптов по мере ее загрузки (рекурсивный setTimeout поставит хук, как только она появится в поле видимости).
Таким образом можно внедряться во многое. Кроме разве что запросов из адресной строки. И еще местами возникают внезапные трудности. Например, полноценно имитировать keydown/keyup/... невозможно - если скрипт захочет, то он отличит его от настоящего, поэтому имитировать - никак, только изучить этот самый скрипт и что-то с ним сделать. Или вот - нельзя кросс-доменно получить base64 из уже загруженного img, если у него ДО загрузки картинки не стоит crossorigin="anonymous", а успеть поставить его до загрузки картинки - крайне проблематично, ибо нет спец. события, а редактировать HTML и прочие ответы запросов напрямую мы не можем.
Но можно:
а) Поднять специальный сервак, который будет работать как MITM-прокси.
А у расширений есть API, позволяющее перенаправлять на него запрос.
Важный момент - если там HTTPS, то и сервак тоже должен быть HTTPS.
б) Поднять полноценный прокси и настроить его в Chrome расширением. Но тут, насколько знаю, надо именно все запросы проксировать. А это даст кучу издержек. Тот же 2ip.ru станет неюзабелен.
Хотя, можно поднять локальный прокси, но все равно вроде бы некоторые серваки умеют распознавать.
в!) Если это AJAX-запрос, то можно создать хитроумную систему из контент-скрипта, который внедрится в страницу и поставит какие-то хуки, например, прямо на XMLHttpRequest, или на какую-то функцию из скриптов по мере ее загрузки (рекурсивный setTimeout поставит хук, как только она появится в поле видимости).
Таким образом можно внедряться во многое. Кроме разве что запросов из адресной строки. И еще местами возникают внезапные трудности. Например, полноценно имитировать keydown/keyup/... невозможно - если скрипт захочет, то он отличит его от настоящего, поэтому имитировать - никак, только изучить этот самый скрипт и что-то с ним сделать. Или вот - нельзя кросс-доменно получить base64 из уже загруженного img, если у него ДО загрузки картинки не стоит crossorigin="anonymous", а успеть поставить его до загрузки картинки - крайне проблематично, ибо нет спец. события, а редактировать HTML и прочие ответы запросов напрямую мы не можем.
Похожие вопросы
- [HTML/CSS/JS] Как сохранять изменённые в .js данные оффлайн-сервера локально?
- Как принять ответ от сервера node.js
- Скачал XAMPP. Нужно запустить сервер, но меня интересует совсем другое...
- В JS существует 8 типов данных:
- Какую структуру данных вы используете в разработке js приложений? Дерево? или Множество объектов? пояснение внутри
- Зачем вообще нужны базы данных? Не лучше ли их хранить в файлах json?(вопрос может показаться глупым)
- можно ли ссылаться на близлежащий файл, а не на сервер
- Хочу сделать программу которая берёт данные с сайта и по ним строит график, подскажите в какую сторону податься?
- С чего начинать проект? С проектировании базы данных или пользовательского интерфейса?
- Что такое Nodejs? Это сервер как Apache? Это ЯП как Php?