Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / Перехват AJAX запросов в расширении / 6 сообщений из 6, страница 1 из 1
13.03.2018, 01:14
    #39613850
Tsyklop
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Перехват AJAX запросов в расширении
Заказчик хочет что бы расширение перехватывало запросы AJAX и перед отправкой по нужному адресу отправляло на его сервер. Это нужно для сотрудников, а не для всех. Так что не надо писать это не хорошо и т.д.

Пишу вот такое в content.js:

Код: javascript
1.
2.
3.
4.
5.
6.
    (function(send) {
        XMLHttpRequest.prototype.send = function() {
            console.log('ajax');
            send.apply(this, arguments);
        };
    })(XMLHttpRequest.prototype.send);



Но вот это не работает. Пытался в window.onload и вне его. выставлял разные типы run_at в manifest.json.

А вот если я этот же код исполню из консоли то все работает. Что я не так делаю?

manifest.json

Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
{
  "manifest_version": 2,
  "name": "Sender",
  "version": "1",
  "permissions": [
    "tabs",
    "activeTab",
    "http://*/*",
    "https://*/*",
    "storage",
    "downloads"
  ],
  "icons": {
    "48": "48x48.png"
  },
  "background": {
    "scripts": [
      "jquery.js",
      "bg.js"
    ]
  },
  "content_scripts": [
    {
      "matches": [
        "https://*/*",
        "http://*/*"
      ],
      "js": [
        "cryptojs.js",
        "jquery-3.3.1.min.js",
        "content.js"
      ],
      "run_at": "document_idle"
    }
  ],
  "browser_action": {
    "default_title": "Open",
    "default_icon": "48x48.png",
    "default_popup": "popup.html"
  }
}
...
Рейтинг: 0 / 0
13.03.2018, 01:35
    #39613852
hVostt
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Перехват AJAX запросов в расширении
...
Рейтинг: 0 / 0
13.03.2018, 03:43
    #39613859
stanilar
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Перехват AJAX запросов в расширении
Очевидно, что в консоле скрипт выполняется после загрузки страницы, а скрипт из расширения - до.

Для расширений есть очень специфичные хуки на работу со страницей. Например для FF надо было делать как-то так:

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
tabs.open(
		{

			onReady:function onReady(tab) 
			{						
                                ...
				let worker = tab.tab.attach({ contentScriptFile : jsfiles});					
                                ...
			},

		});
...
Рейтинг: 0 / 0
13.03.2018, 10:50
    #39613970
Tsyklop
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Перехват AJAX запросов в расширении
stanilar,

content.js и так встраивается в страницу с расширения. И в нем я могу прописать хук хоть в window.onload но эффекта не будет
...
Рейтинг: 0 / 0
13.03.2018, 13:50
    #39614103
stanilar
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Перехват AJAX запросов в расширении
Tsyklopэффекта не будет
Конечно не будет, если браузер перед запуском клиентского скрипта, но после того, как поставиться твой хук, переинициализирует контекст выполнения.
...
Рейтинг: 0 / 0
13.03.2018, 16:10
    #39614200
Агнец за бортом
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Перехват AJAX запросов в расширении
Tsyklop,

А зачем это делать на клиенте?
...
Рейтинг: 0 / 0
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / Перехват AJAX запросов в расширении / 6 сообщений из 6, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]