Skip to content

AnyBalanceDebugger

Dmitry Kochin edited this page Nov 7, 2016 · 17 revisions

Введение

Пошаговый отладчик провайдеров представляет собой расширение Google Chrome, которое симулирует среду выполнения провайдера в AnyBalance. Симуляция, однако, не полная, поэтому если провайдер работает в отладчике, то его необходимо проверить и непосредственно в приложении AnyBalance.

Установка

Для установки отладчика установите из магазина Google Chrome расширение. После установки выполните следующий шаги.

  1. В Chrome перейдите по ссылке chrome://settings/extensions.
  2. Для расширения AnyBalanceDebugger установите флаги: * Разрешить использование в режиме инкогнито * Разрешить открывать файлы по ссылкам

Обновление

В интерфейсе отладчика выводится информация о его версии в правом верхнем углу. Там же есть ссылка на эту документацию. После обновления провайдера браузером в автоматическом режиме или пользователем вручную отладчик может работать некорректно. Для его корректной работы необходимо снять и установить заново флаги:

  • Разрешить использование в режиме инкогнито
  • Разрешить открывать файлы по ссылкам

Подготовка к отладке

Для отладки необходимо сформировать специальный локальный html-файл, в котором должны быть прописаны ссылки на скрипты провайдера и определены необходимые для них настройки. Файл обязательно должен иметь имя, заканчивающееся на -anybalance.html, например, myprovider-anybalance.html

В противном случае отладчик к нему не присоединится. Эту страницу можно сохранить на локальный диск со ссылки chrome-extension://bjhpeieonkhafpmpkjolifioeodfoiag/debug-anybalance.html или скопировать из листинга ниже в папку с провайдером. Комментарии показывают, в каких местах следует сделать изменения.

<html>
<head>
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
  <script>
	var g_api_preferences = {
            //Вставьте сюда настройки, необходимые для вашего провайдера
            //Все настройки должны быть описаны в файле preferences.xml
            //Например:
            login: 'username',
            password: 'secretpass'
	};
  </script>
  <!-- Если у вас запущен локальный Fenix server (http://fenixwebserver.com/) (рекомендуется), 
       то указывать список файлов со скриптами, от которых зависит провайдер, здесь не нужно.
       Вместо этого необходимо указать список модулей и файлов в манифесте. 
       Отладчик автоматически загрузит все js файлы согласно описанию блоков <depends> и <files> из файла манифеста!

       Если вы предпочитаете способ отладки без локального сервера, перечислите все скрипты, 
       указанные в манифесте вашего провайдера. Указывайте относительные пути к файлам (относительно debug-anybalance.html!).
       Библиотека JQuery уже включена, отдельно указывать её не нужно.
       Если в манифесте есть блок <depends>, то для каждого модуля необходимо использовать следующий шаблон:
           <script src="../../modules/{id_модуля}/build/{id_версии}/{id_модуля}.min.js"></script>
       Если в манифесте есть блок <files>, то для каждого js файла необходимо использовать следующий шаблон:
           <script src="{название_файла}"></script>
       Проверьте, чтобы все указанные файлы были загружены!
       Для этого в Chrome DevTools посмотрите на вывод консоли или на вкладку "Сеть". Ошибок быть не должно.
       Примеры:
           <script src="../../modules/library/build/head/library.min.js"></script>
           <script src="../../modules/framework/gwt/build/head/gwt.min.js"></script>
           <script src="main.js"></script>
  -->
</head>
</html>

Этот файл можно записать в любое место на локальном диске (но указанные в script тегах файлы отлаживаемого провайдера должны быть доступны. Так что лучше размещать этот файл прямо в каталоге с отлаживаемым провайдером). После этого его надо открыть в Google Chrome. Если расширение установлено, то по нажатию кнопки Execute должна быть выполнена функция main() провайдера. Отладочные сообщения направляются в консоль Chrome и на экран. Если вы поменяли исходные файлы провайдера, не забудьте обновить отладочную страницу в Chrome, иначе он не увидит ваши изменения!

Локальный Fenix сервер необходим для чтения файла манифеста и загрузки всех модулей и файлов, от которых зависит выполнение провайдера. Установка Fenix сервера очень простая и настраивать его не нужно!

Для распознавания ReCaptcha требуется запущенная вспомогательная программа [AnyBalance ReCaptcha] (http://anybalance.ru/download/anybalance-recaptcha.jar). Если провайдер затребует распознавание ReCaptcha, она будет отправлена в эту программу, где вы сможете распознать её вручную.

Пошаговая отладка

Пошаговая отладка делается с помощью встроенного в Google Chrome отладчика JavaScript. Консоль JavaScript может быть вызвана комбинацией клавиш в Windows: CTRL-SHIFT-J, на Mac: ALT-⌘-J . Или в меню Инструменты / Консоль JavaScript. Можно устанавливать точки останова (кликнув на номер нужной строки в окне просмотра JavaScript файла).

Особенности среды выполнения отладчика

В Google Chrome есть Ошибка, приводящая к невозможности выполнения отладчиком запроса (NetworkError: Failed to execute 'send' on 'XMLHttpRequest': Failed to load 'url'), если в процессе выполнения происходят перенаправления на другой домен или протокол. Для того, чтобы обойти эту ошибку, можно использовать Fiddler, Расширение AnyBalanceFiddlerExtension для Fiddler (нужно установить в %userprofile%\Documents\Fiddler2\Scripts\) и в отладчике поставить галочку Enable 3xx replace.

Куки и авторизация сохраняются между последовательными запросами к AnyBalance.requestGet и AnyBalance.requestPost также, как и в AnyBalance. Но более того, куки сохраняются и между несколькими вызовами отладчика. Это может влиять на процедуру логина и навигации по сайту провайдера. Поэтому можете открыть новое окно Инкогнито и выполнить провайдер там - инкогнито открывается чистым, как будто вы ни разу не заходили до этого на сайт. Но будьте внимательны, все открытые окна Инкогнито Google Chrome разделяют куки между собой. Они очистятся только после закрытия всех окон Инкогнито и открытия одного заново.

Поскольку расширение Google Chrome это просто подписанный Zip, то исходный код этого расширения вы всегда можете увидеть, просто открыв файл расширения как zip файл. Если в процессе использования возникнут вопросы и предложения, то добро пожаловать в группу.

You can’t perform that action at this time.