 
			
				07.07.2021, 15:07
			
			
			
		  
	 | 
 
	
		
		
		
			
			| 
			
				
				
				 Новичок на форуме 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 07.07.2021 
					
					
					
						Сообщений: 5
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	| 
	
	
		
		
			
			 
				Получение переменных из webpackJsonp
			 
			
		
		
		
		Добрый день. Не силен в JavaScript и ранее с webpackJsonp вообще не работал. 
 
Есть набор скриптов данного фреймворка с функциями, среди которых есть:  
 
1527: function(t, e, a) { 
        "use strict"; 
        (function(t) { 
            var i = a(0) 
              , o = a(26) 
              , n = a(878) 
              , s = a(123) 
              , r = a(134) 
              , c = a(337) 
              , u = a(2) 
              , l = a(51) 
              , h = a(1464) 
              , d = a(36) 
              , p = a(1443) 
              , f = a(880) 
              , m = a(126) 
              , v = a(1528) 
              , b = a(133) 
              , g = a(338) 
              , _ = a(1487) 
              , S = a(85) 
              , y = a(6) 
              , w = a(4) 
              , O = a(782) 
              , C = a(29) 
              , D = a(519) 
              , P = a(1529) 
              , j = null 
              , k = new n.a 
              , T = function(e) { 
                function n(t, a) { 
                    var i = e.call(this, a) || this; 
                    return i.directServiceUrl = t, 
                    i 
                } 
                return Object(i.e)(n, e), 
 
... 
 
           n.prototype.getRoomData = function(t) { 
                    var e, a, i, o, n, s = chat.performerData ? "1" : "", r = (null === (a = null === (e = u.a.getState()) || void 0 === e ? void 0 : e.chatOptions) || void 0 === a ? void 0 : a.chatDirect) && (null === (o = null === (i = u.a.getState()) || void 0 === i ? void 0 : i.chatExtra) || void 0 === o ? void 0 : o.hitUrl) ? "1" : ""; 
                    return chat.debug("getRoomData", t), 
                    Object(b.a)({ 
                        url: this.directServiceUrl, 
                        method: "getRoomData", 
                        headers: { 
                            "X-ab-Split-Group": (null === (n = u.a.getState()) || void 0 === n ? void 0 : n.chatABSplitGroup) || "" 
                        }, 
                        args: [t, s, r] 
                    }) 
                } 
 
... 
 
 
В getRoomData есть локальная переменная n.chatABSplitGroup. Найти место где она инициализируется я не смог.  
Так как я не могу менять скрипты, но могу выполнить javascrpt код на странице. Необходимо получить ее значение. Возможно ли это в принципе? Вроде в теории можно вызывать функции данного фреймворка по номеру, но тут я совсем понимаю параметры вызова.  
Заранее спасибо за помощь. Жду ответа. 
		
	
		
		
		
		
		
		
	
		
			
			
	
			
			
			
			
			
				 
			
			
			
			
			
			
				
			
			
			
		 
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				07.07.2021, 16:21
			
			
			
		  
	 | 
 
	
		
		
		
			  | 
			
			
				
				
				 Тлен 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 02.01.2010 
					
					
					
						Сообщений: 6,601
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	
	
	
		
		
		
		
		Просто идёшь вверх и смотришь: 
n.chatABSplitGroup 
n = u.a.getState() 
u = a(2) 
a - это внутренний webpack require 
webpack - один из самых популярных сборщиков, скачивашь какой-нить пример, билдишь и смотришь как оно там внутрях устроено.
 
Но я те облегчу задачу  , как-то так можно внедриться и получать модули изнутри:
 
if(!window['__webpack_require__']) {
  window['__webpack_require__'] = (key => {
    let require;
    webpackJsonp.push([[key],{[key](...a) {require = a[2]}},[[key, key]]]);
    return require;
  })(String(Math.random()));
};
function getChatABSplitGroup() {
  const u = __webpack_require__(2);
  const state = u.a.getState();
  return state && state.chatABSplitGroup || "";
}
console.log(getChatABSplitGroup());
Ток следует помнить, что при следующей версии как циферка 2, так и ключ .a могут поменяться, т.к. являются результатом минимизации.  
		
	
		
		
		
		
		
			
				__________________ 
				29375, 35 
 
			 
		
		
		
		
		
						  
				
				Последний раз редактировалось Aetae, 07.07.2021 в 16:28.
				
				
			
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				07.07.2021, 21:30
			
			
			
		  
	 | 
 
	
		
		
		
			
			| 
			
				
				
				 Новичок на форуме 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 07.07.2021 
					
					
					
						Сообщений: 5
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	| 
	
	
		
		
		
		
		 Огромное спасибо. В принципе немного понял как оно устроено.  
Я так понимаю, что это выгрузка этих функций. Только при запуске Вашего кода в Chrome Debug Console выдает ошибку: 
 
VM529:4 Uncaught TypeError: webpackJsonp.push is not a function 
		
	
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				07.07.2021, 21:46
			
			
			
		  
	 | 
 
	
		
		
		
			  | 
			
			
				
				
				 Тлен 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 02.01.2010 
					
					
					
						Сообщений: 6,601
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	
	
	
		
		
		
		
		Странно. М.б. не актуальная версия вебпака там юзается. Тут без кода не разобраться. Там в самом верху должно быть что-то типа  
window['webpackJsonp'] = ...
 кинь сюда, посмотрю.  
		
	
		
		
		
		
		
			
				__________________ 
				29375, 35 
 
			 
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				07.07.2021, 22:55
			
			
			
		  
	 | 
 
	
		
		
		
			  | 
			
			
				
				
				 Тлен 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 02.01.2010 
					
					
					
						Сообщений: 6,601
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	| 
	
	
		
		
		
		
		 Rise, для того он и предназначен.) (или юзескриптов) 
		
	
		
		
		
		
		
			
				__________________ 
				29375, 35 
 
			 
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				07.07.2021, 23:46
			
			
			
		  
	 | 
 
	
		
		
		
			
			| 
			
				
				
				 Новичок на форуме 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 07.07.2021 
					
					
					
						Сообщений: 5
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	| 
	
	
		
		
		
		
		 Нашел только в основном скрипте перед подключением других модулей js следующий код: 
 
var n = window.webpackJsonp; 
    window.webpackJsonp = function(e, i, o) { 
        for (var s, r, c = 0, l = []; c < e.length; c++) 
            r = e[c], 
            a[r] && l.push(a[r][0]), 
            a[r] = 0; 
        for (s in i) 
            Object.prototype.hasOwnProperty.call(i, s) && (t[s] = i[s]); 
        for (n && n(e, i, o); l.length; ) 
            l.shift()() 
    } 
 
Вроде больше нет нигде ничего похожего. 
		
	
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				08.07.2021, 00:05
			
			
			
		  
	 | 
 
	
		
		
		
			  | 
			
			
				
				
				 Тлен 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 02.01.2010 
					
					
					
						Сообщений: 6,601
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	| 
	
	
		
		
		
		
		 NIIL, а webpackHotUpdate там рядом случаем нет? 
Если нет, то тут всё сложнее. Это webpack 3 и так просто в него уже не внедриться после загрузки.) 
Для чего вам это вообще надо? Для юзерскрипта или для чего-то иного? В можете запускать код до загрузки страницы? 
		
	
		
		
		
		
		
			
				__________________ 
				29375, 35 
 
			 
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				08.07.2021, 00:28
			
			
			
		  
	 | 
 
	
		
		
		
			
			| 
			
				
				
				 Новичок на форуме 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 07.07.2021 
					
					
					
						Сообщений: 5
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	| 
	
	
		
		
		
		
		 webpackHotUpdate - не встречал. 
На самом деле эта переменная нужна для обращения к php скрипту на сайте. Сам же парсер, который я пишу на Delphi, может использовать Chrome компонент, в котором будет выполняться скрипт и присваивать свойству любого поля странице - значение переменной... Это конечно грабли, но пока я не вижу способов это все упростить. Данная переменная генерируется для каждой сессии, поэтому использовать полученную через браузер, а потом вставить в приложение, к сожалению, не получится 
		
	
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				08.07.2021, 00:54
			
			
			
		  
	 | 
 
	
		
		
		
			  | 
			
			
				
				
				 Тлен 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 02.01.2010 
					
					
					
						Сообщений: 6,601
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	
	
	
		
		
		
		
		Тамщем вот это:  
Object.defineProperty(Function.prototype, 'c', {
  configurable: true,
  set(value) {
    if(
      typeof value === 'object'
      && 'e' in this
      && 'm' in this
      && !window['__webpack_require__']
    ) {
      window['__webpack_require__'] = this;
      delete Function.prototype['c'];
    }
    Object.defineProperty(this, 'c', {
      writable: true,
      configurable: true,
      enumerable: true,
      value
    });
  }
});
надо запустить  до всего кода страницы(в расширениях это document_start, не знаю как ты подрубаешься к браузеру), а дальше, после загрузки, также:
 
function getChatABSplitGroup() {
  const u = __webpack_require__(2);
  const state = u.a.getState();
  return state && state.chatABSplitGroup || "";
}
console.log(getChatABSplitGroup());
 
		
	
		
		
		
		
		
			
				__________________ 
				29375, 35 
 
			 
		
		
		
		
		
						  
				
				Последний раз редактировалось Aetae, 08.07.2021 в 12:10.
				
				
			
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				08.07.2021, 21:49
			
			
			
		  
	 | 
 
	
		
		
		
			
			| 
			
				
				
				 Новичок на форуме 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 07.07.2021 
					
					
					
						Сообщений: 5
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	| 
	
	
		
		
		
		
		 Спасибо огромное. Попробую 
		
	
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
 
 |  
  |