Замените удаленный файл JavaScript на локальную отладочную копию, используя Greasemonkey или userscript - PullRequest
33 голосов
/ 16 октября 2011

При отладке клиентского приложения, использующего бэкэнд Google, я добавил несколько отладочных версий функций и вставил их с помощью редактора сценариев Chrome Developer Tools.

Однако этот подход имеет ряд ограничений.Во-первых, редактор, кажется, не всегда работает с деинициализированными файлами, и, когда JS-файл имеет длину 35 Кб, это проблема.

Другая проблема заключается в том, что вся инициализация выполняетсяво время загрузки использует оригинальные «непатченные» функции, поэтому это не идеально.

Я хотел бы заменить удаленный файл javascript.js своей собственной локальной копией, предположительно используя некоторое регулярное выражение в имени файла,или какая бы стратегия ни подходила, я с удовольствием использую либо Firefox, либо Chrome, если один из них легче другого.

Ответы [ 2 ]

19 голосов
/ 24 октября 2011

Таким образом, как определил @BrockAdams, в зависимости от требований существует несколько решений этих типов проблем, и они следуют одному из двух методов.

  1. API браузера switcharoo.
  2. Перехват на основе прокси.

API браузера switcharoo. Firefox и Chromeподдержка расширений браузера, которые могут использовать API-интерфейсы конкретной платформы для регистрации обработчиков событий для «onbeforeload» или «onBeforeRequest» в случае Firefox и Chrome соответственно.API-интерфейсы Chrome в настоящее время являются экспериментальными, поэтому эти инструменты, вероятно, будут лучше разработаны под Firefox.2 инструмента, которые определенно делают что-то вроде того, что требуется: AdBlock плюс и Jsdeminifier , оба из которых имеют доступный исходный код.

Ключевой момент для этих двух приложений Firefoxзаключается в том, что они перехватывают веб-запрос до , когда браузер получает его в свои руки, и работают на другой стороне этапа шифрования http / https, следовательно, могут видеть расшифрованный ответ, как указано в .другой пост о том, что они не делают всего этого, хотя jsdeminifier был очень полезен, я не нашел плагин Firefox, чтобы делать именно то, что я хотел, но я вижу из этих предыдущих плагинов, что это возможно как с Firefox, так и с Chrome .Хотя на самом деле они не справляются со своими задачами.

Перехват на основе прокси. Это, безусловно, лучший вариант в простой среде HTTP, есть целый ряд прокси, таких как pivoxy., fiddler2 , HTTP-прокси Charles Web и, вероятно, некоторые из них, на которые я не обращал особого внимания, например snort, поддерживающий какую-либо фильтрацию.

Самым простым решением для меня были foxyproxy и privoxyна firefox и настройте user.action и user.filter для определения URL страницы, а затем для применения фильтра, который заменяет оригинальный тег src, на мой собственный.

случай https.proxy vs plugin Когда запрос https, прокси не может видеть URL-адрес запроса или тело ответа, поэтому он не может выполнять классную замену.Однако есть один вариант для тех, кто любит возиться с браузером.И это посредник SSL посредник.HTTP-прокси Charles Web является основным решением этой проблемы.По сути, он работает так, что когда ваш браузер отправляет запрос на удаленный HTTPS-сервер, ssl-прокси перехватывает запрос и из ip-адреса сервера на лету генерирует сертификат сервера, который он подписывает своим собственным корневым CA,и отправляет обратно в браузер.Браузер, очевидно, жалуется на самоподписанный сертификат, но здесь вы можете установить в браузере сертификат корневого CA ssl-прокси, сбивая с толку браузер и позволяя ssl-прокси работать в середине и производить замены и фильтры в необработанном ответе.body.

Альтернатива накатить свое собственное расширение Chrome Я решил пойти накатить свое собственное расширение Chrome, которое я планирую сделать доступным.В настоящее время он находится в жестко заданном для меня состоянии, но работает довольно хорошо, даже для запросов https, и еще одно преимущество заключается в том, что решение для подключаемых модулей браузера может быть более тесно интегрировано с инструментами разработчика браузера.

16 голосов
/ 18 марта 2016

Существует еще один инструмент Запрашиваемый - расширение Chrome, которое можно использовать для перезаписи URL-адресов и замены ваших производственных библиотек локальными размещенными библиотеками с очень простой настройкой и очень дружественным интерфейсом.

Естьпосмотрите на это:

enter image description here

PS: я знаю, что на этот вопрос ответили, но я все же ответил на это, учитывая, что это будет очень полезно для будущих читателей.

...