3 место Автоматизация Android без посредников. Часть 2.

WLDN

Client
Регистрация
09.07.2015
Сообщения
357
Благодарностей
566
Баллы
93
77575


Привет, друзья. :az:

Я подготовил вам новую порцию информации об Android для того, чтобы вы переварили её и сделали exxxtraCash$$$$$.
Для удобства вторая часть будет содержать несколько пунктов:
  1. Подмена запросов
  2. Работа со смартфонами в многопотоке
  3. Бонус

Подмена запросов
У ZennoPoster есть прекрасный метод для подмены запросов. С помощью него вы можете заменить в запросе те параметры, которые не удалось заменить штатным методом и, например, обойти защиту какого-либо сайта. Также имеется отличный метод для получения запросов в переменную.

Но что делать, если речь идёт об Android? Как подменить и вытащить запросы из эмулятора?
Для этого мы можем использовать библиотеку FiddlerCore.
Наверное кто-то из вас пользовался или активно пользуется Fiddler, так вот у них есть ещё и библиотека, которую вы можете внедрить в свой шаблон и делать с трафиком всё что вам вздумается.

Для вас я написал удобный код для работы с библиотекой. Рассмотрим принцип его работы.
Скачивайте шаблон, устанавливайте adb и софт, закидывайте dll в ExternalAssemblies.
В предыдущей статье есть инструкция и пояснения к шаблону.

В шаблоне вы найдете 2 новых кубика:
Start Fiddler - запускает сервер и асинхронный код для работы с трафиком,
Stop Fiddler - закрывает сервер и останавливает асинхронный код.

77577


В общем коде вы можете найти класс Fid с методами:
Start:
Start:
public void Start(){
            FiddlerApplication.BeforeRequest += FiddlerApplication_BeforeRequest; //Выполнение кода до запроса
            FiddlerApplication.BeforeResponse += FiddlerApplication_BeforeResponse; //Выполнение кода после запроса
            FiddlerApplication.AfterSessionComplete += FiddlerApplication_AfterSessionComplete; //Выполнение по завершению сессии (сессия это когда запрос полностью был получен)
            try {
                FiddlerApplication.Startup(8888, false, true, true); //запуск Fiddler сервера с настройками (порт, установить сервер в системные настройки, включить дешифровку ssl трафика, принимать удаленные подключения)
            } catch (Exception e) {}
         
        }
Stop:
Stop:
public void Stop(bool server_deactivate){
            FiddlerApplication.BeforeRequest -= FiddlerApplication_BeforeRequest; //Отключение асинхронного кода до запроса
            FiddlerApplication.BeforeResponse -= FiddlerApplication_BeforeResponse; //Отключение асинхронного кода после запроса
            FiddlerApplication.AfterSessionComplete -= FiddlerApplication_AfterSessionComplete; //Отключение асинхронного кода по завершению сессии
         
            if (FiddlerApplication.IsStarted() && server_deactivate == true) // Отключение
                FiddlerApplication.Shutdown();  // Fiddler Server
        }
B внутри методы, в которых вам нужно писать свой код:
Method:
        void FiddlerApplication_BeforeRequest(Session oSession){
            }
     
        void FiddlerApplication_BeforeResponse(Session oSession){
        }
     
        void FiddlerApplication_AfterSessionComplete(Session oSession){
            }
        }
Для примера я сделал и оставил замену некоторых значений для приложения TikTok:
  • замена названия модели (FiddlerApplication_BeforeRequest)
  • подмена в теле запроса (FiddlerApplication_BeforeRequest)
  • парсинг ссылок картинок (FiddlerApplication_AfterSessionComplete)

Для того чтобы писать код вам потребуется небольшие знания C# и для удобного тестинга можно использовать Fiddler и Fiddler ScriptEditor (см. Видео).

К сожалению, некоторые приложения шифруют тела запросов и вам придется поковыряться в прилке, чтобы удалить шифрование, либо использовать Frida для подмены функций.


Работа со смартфонами в многопотоке
В шаблоне я оставил несколько новых кубиков для работы со смартфонами.
77579


Но чтобы всё нормально работало вам нужно закомментировать и раскомментировать указанные части кода в общем коде.

Смысл работы абсолютно такой же как и в версии для эмуляторов:
  • Алгоритм получает список всех девайсов через adb
  • По порядку проверяет свободные серийники для взятия в работу. Если их нет в глобальной переменной, то берёт.
  • Отправляет значение серийника в переменную, чтобы подключить телефон по adb

Бонус
В прошлой статье многие жаловались, что невозможно работать с русскоязычными прилками.
Я немного подредактировал SharpAdbClient.dll для того, чтобы это работало.

Также добавил блок с установкой Clipper. Он нужен для того, чтобы вытаскивать значения из буфера обмена и вносить в переменную.
В кубике есть пример установки приложения через специальный кубик, если PacketManager не работает на вашем смартфоне.


Видео



Если вам понравилась моя статья, то буду безмерно рад вашим лайкам и голосам!:-)
 
Тема статьи
Другое
Номер конкурса статей
Пятнадцатый конкурс статей

Вложения

Для запуска проектов требуется программа ZennoPoster или ZennoDroid.
Это основное приложение, предназначенное для выполнения автоматизированных шаблонов действий (ботов).
Подробнее...

Для того чтобы запустить шаблон, откройте нужную программу. Нажмите кнопку «Добавить», и выберите файл проекта, который хотите запустить.
Подробнее о том, где и как выполняется проект.

Последнее редактирование:

Kaspian

Client
Регистрация
23.12.2013
Сообщения
93
Благодарностей
132
Баллы
33
Спасибо! Раньше для подмены задействовал fiddlerscript, но использование напрямую библиотеки значительно все упрощает)
 
  • Спасибо
Реакции: WLDN

radv

Client
Регистрация
11.05.2015
Сообщения
3 823
Благодарностей
2 034
Баллы
113
Полезная вещь.:ay: Из прошлой части много полезного взял. :az:
 
  • Спасибо
Реакции: WLDN и lybimiy86

lybimiy86

Client
Регистрация
29.10.2016
Сообщения
97
Благодарностей
187
Баллы
33
В предыдущей статье автора Автоматизация Android без посредников. Часть 1. Я оставлял свой отзыв в котором написал:
Судя по темам автора - он может написать гораздо более интересную статью, чего я конечно и желаю в будущем.
Чтож - это именно та статья, на которую я дал напутствие.
По-своему роду уникальная статья, аналогов которой ещё небыло на форуме. Надеюсь разработчики тоже это понимают и не обделят тебя вниманием, а может и возьмут этот инструмент на вооружение для допиливания Zennodroid

Браво Маэстро! Мой голос критика - теперь твой! Голосуем за тебя всем чатом.
 
  • Спасибо
Реакции: WLDN

gameboy123

Client
Регистрация
09.12.2017
Сообщения
58
Благодарностей
9
Баллы
8
будем ждать продолжения! Спасибо)
 
  • Спасибо
Реакции: WLDN

kane16

Client
Регистрация
04.01.2021
Сообщения
78
Благодарностей
112
Баллы
33
Просто супер! Голосую за тебя:ay:
 
  • Спасибо
Реакции: WLDN
Регистрация
05.06.2019
Сообщения
570
Благодарностей
455
Баллы
63
Маями, ты лучший! Спасибо!
 
  • Спасибо
Реакции: WLDN

usawa0

Client
Регистрация
29.11.2019
Сообщения
61
Благодарностей
22
Баллы
8
Однозначно голосую!
 
  • Спасибо
Реакции: WLDN

TwistDanceR

Client
Регистрация
30.05.2019
Сообщения
479
Благодарностей
200
Баллы
43
Срочно надо купить зенку чтобы голос за тебя учли))))) Спасибо, красавчик!
 
  • Спасибо
Реакции: WLDN

Gfoblin

Client
Регистрация
30.05.2013
Сообщения
4 605
Благодарностей
1 015
Баллы
113
Сорян не вникал - это зенноПостер или Дроид?
Спасибо!
 
  • Спасибо
Реакции: WLDN

WLDN

Client
Регистрация
09.07.2015
Сообщения
357
Благодарностей
566
Баллы
93

Gfoblin

Client
Регистрация
30.05.2013
Сообщения
4 605
Благодарностей
1 015
Баллы
113
  • Спасибо
Реакции: WLDN

WLDN

Client
Регистрация
09.07.2015
Сообщения
357
Благодарностей
566
Баллы
93

Nikitos

Client
Регистрация
15.09.2016
Сообщения
46
Благодарностей
6
Баллы
8
Спасибо за статью, очень пригодилась. Только не могу понять как использовать проксю при работе с эмулятором android. Если через настройки wi-fi в эмуляторе, тогда через fiddler не получится ловить запросы.
 
  • Спасибо
Реакции: WLDN

kane16

Client
Регистрация
04.01.2021
Сообщения
78
Благодарностей
112
Баллы
33
Напиши пожалуйста, код для получения ответа запроса в переменную. У самого что-то не выходит(
 
Последнее редактирование:
  • Спасибо
Реакции: WLDN

WLDN

Client
Регистрация
09.07.2015
Сообщения
357
Благодарностей
566
Баллы
93
Спасибо за статью, очень пригодилась. Только не могу понять как использовать проксю при работе с эмулятором android. Если через настройки wi-fi в эмуляторе, тогда через fiddler не получится ловить запросы.
Привет, спасибо. Попробуй узнать точный локальный IP пк с которого ты запускаешь эмулятор. Должно получиться, если делать так как в видео.
 

WLDN

Client
Регистрация
09.07.2015
Сообщения
357
Благодарностей
566
Баллы
93
Напиши пожалуйста, код для получения ответа запроса в переменную. У самого что-то не выходит(
Я думаю что так.

project.Variable["название_переменной"].Value = oSession.GetResponseBodyAsString();

в этом случае ты будешь получать все тела запросов, которые будет ловить фидлер. Чтобы взять конкретный, нужно написать условие перед этим кодом как в примере.

Вот так отправляет все тела запросов в FiddlerScript'е в лог:
FiddlerApplication.Log.LogString(oSession.GetResponseBodyAsString());
 
  • Спасибо
Реакции: trecho и kane16

diamlan

Client
Регистрация
14.09.2019
Сообщения
113
Благодарностей
18
Баллы
18
Спасибо за статью, очень пригодилась. Только не могу понять как использовать проксю при работе с эмулятором android. Если через настройки wi-fi в эмуляторе, тогда через fiddler не получится ловить запросы.
Пробрось fiddler с помощью ProxyCap на свою проксю.
 

trecho

Client
Регистрация
12.07.2018
Сообщения
171
Благодарностей
124
Баллы
43
Ура! Поддержка русского добавлена!
Спасибо!
 
  • Спасибо
Реакции: WLDN

Emmett_Red

Client
Регистрация
14.09.2019
Сообщения
96
Благодарностей
9
Баллы
8
Как установить прокси ? Это самый главный вопрос
 

WLDN

Client
Регистрация
09.07.2015
Сообщения
357
Благодарностей
566
Баллы
93
Как установить прокси ? Это самый главный вопрос
Привет.

Несколько вариантов:
- Автоматизировать установку прокси в Wi-Fi настройках.
- Использовать команду:
adb shell settings put global http_proxy <ip>:<port>
- Использовать апк по типу ProxyDroid
- Использовать Proxifier с моб проксями
- Приобрести мой плагин Droxy
- Изучить вопрос и написать самостоятельно программу для проксирования (без шуток)
 
  • Спасибо
Реакции: westruk

Emmett_Red

Client
Регистрация
14.09.2019
Сообщения
96
Благодарностей
9
Баллы
8
Привет.

Несколько вариантов:
- Автоматизировать установку прокси в Wi-Fi настройках.
- Использовать команду:
adb shell settings put global http_proxy <ip>:<port>
- Использовать апк по типу ProxyDroid
- Использовать Proxifier с моб проксями
- Приобрести мой плагин Droxy
- Изучить вопрос и написать самостоятельно программу для проксирования (без шуток)
Как преобрести и есть ли возможность потестить?
 

PUNKOFFYA

Client
Регистрация
10.05.2021
Сообщения
7
Благодарностей
2
Баллы
3
Привет.

Несколько вариантов:
- Автоматизировать установку прокси в Wi-Fi настройках.
- Использовать команду:
adb shell settings put global http_proxy <ip>:<port>
- Использовать апк по типу ProxyDroid
- Использовать Proxifier с моб проксями
- Приобрести мой плагин Droxy
- Изучить вопрос и написать самостоятельно программу для проксирования (без шуток)
Здравствуйте, а есть ли код для выключения эмуялтора?
 

Nike59

Client
Регистрация
05.08.2011
Сообщения
120
Благодарностей
121
Баллы
43
Замечательная статья! Буду с нетерпением ждать продолжения.
 
  • Спасибо
Реакции: WLDN

WLDN

Client
Регистрация
09.07.2015
Сообщения
357
Благодарностей
566
Баллы
93
Здравствуйте, а есть ли код для выключения эмуялтора?
Здравствуйте, в предыдущей статье рассматривал этот вопрос, если мне не изменяет память. Выключить можно разными способами, я лично делал через kill process
 

gs517

Client
Регистрация
18.05.2013
Сообщения
138
Благодарностей
15
Баллы
18
Правильно ли я понял. что сторонний прокси в данной схеме использовать не получиться? т.к локальный от фидлера будет использоваться
 
Последнее редактирование:

Koqpe

Client
Регистрация
23.12.2014
Сообщения
1 099
Благодарностей
648
Баллы
113
Del.
 
Последнее редактирование:

matvey60123

Client
Регистрация
07.06.2020
Сообщения
1
Благодарностей
0
Баллы
1
Можноли поймать дамп в переменую с екрана сматфона?
По типу команди
adb -s {-Variable.adb_name_devices-} shell uiautomator dump
 

WLDN

Client
Регистрация
09.07.2015
Сообщения
357
Благодарностей
566
Баллы
93
Можноли поймать дамп в переменую с екрана сматфона?
По типу команди
adb -s {-Variable.adb_name_devices-} shell uiautomator dump
Взять команду дампа из общего кода и запихнуть в кубик a.Command, не забыть поставить true. В переменной Receiver появится содержимое xml дампа
 

radv

Client
Регистрация
11.05.2015
Сообщения
3 823
Благодарностей
2 034
Баллы
113

Кто просматривает тему: (Всего: 1, Пользователи: 0, Гости: 1)