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

WLDN

Client
Joined
Jul 9, 2015
Messages
357
Reaction score
567
Points
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 не работает на вашем смартфоне.


Видео



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

Attachments

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

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

Last edited:

Kaspian

Client
Joined
Dec 23, 2013
Messages
93
Reaction score
132
Points
33
Спасибо! Раньше для подмены задействовал fiddlerscript, но использование напрямую библиотеки значительно все упрощает)
 
  • Thank you
Reactions: WLDN

radv

Client
Joined
May 11, 2015
Messages
3,837
Reaction score
2,046
Points
113
Полезная вещь.:ay: Из прошлой части много полезного взял. :az:
 
  • Thank you
Reactions: WLDN and lybimiy86

lybimiy86

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

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

gameboy123

Client
Joined
Dec 9, 2017
Messages
58
Reaction score
9
Points
8
будем ждать продолжения! Спасибо)
 
  • Thank you
Reactions: WLDN

kane16

Client
Joined
Jan 4, 2021
Messages
80
Reaction score
114
Points
33
Просто супер! Голосую за тебя:ay:
 
  • Thank you
Reactions: WLDN
Joined
Jun 5, 2019
Messages
595
Reaction score
472
Points
63
Маями, ты лучший! Спасибо!
 
  • Thank you
Reactions: WLDN

usawa0

Client
Joined
Nov 29, 2019
Messages
75
Reaction score
22
Points
8
Однозначно голосую!
 
  • Thank you
Reactions: WLDN

TwistDanceR

Client
Joined
May 30, 2019
Messages
480
Reaction score
200
Points
43
Срочно надо купить зенку чтобы голос за тебя учли))))) Спасибо, красавчик!
 
  • Thank you
Reactions: WLDN

Gfoblin

Client
Joined
May 30, 2013
Messages
4,613
Reaction score
1,019
Points
113
Сорян не вникал - это зенноПостер или Дроид?
Спасибо!
 
  • Thank you
Reactions: WLDN

WLDN

Client
Joined
Jul 9, 2015
Messages
357
Reaction score
567
Points
93
  • Thank you
Reactions: Gfoblin

Gfoblin

Client
Joined
May 30, 2013
Messages
4,613
Reaction score
1,019
Points
113
  • Thank you
Reactions: WLDN

WLDN

Client
Joined
Jul 9, 2015
Messages
357
Reaction score
567
Points
93
Спасибо, над будет зенку обновить таки )
Всё что описано в статье можно делать как на 7ой, так и на 5ой версии
 

Nikitos

Client
Joined
Sep 15, 2016
Messages
46
Reaction score
6
Points
8
Спасибо за статью, очень пригодилась. Только не могу понять как использовать проксю при работе с эмулятором android. Если через настройки wi-fi в эмуляторе, тогда через fiddler не получится ловить запросы.
 
  • Thank you
Reactions: WLDN

kane16

Client
Joined
Jan 4, 2021
Messages
80
Reaction score
114
Points
33
Напиши пожалуйста, код для получения ответа запроса в переменную. У самого что-то не выходит(
 
Last edited:
  • Thank you
Reactions: WLDN

WLDN

Client
Joined
Jul 9, 2015
Messages
357
Reaction score
567
Points
93
Спасибо за статью, очень пригодилась. Только не могу понять как использовать проксю при работе с эмулятором android. Если через настройки wi-fi в эмуляторе, тогда через fiddler не получится ловить запросы.
Привет, спасибо. Попробуй узнать точный локальный IP пк с которого ты запускаешь эмулятор. Должно получиться, если делать так как в видео.
 

WLDN

Client
Joined
Jul 9, 2015
Messages
357
Reaction score
567
Points
93
Напиши пожалуйста, код для получения ответа запроса в переменную. У самого что-то не выходит(
Я думаю что так.

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

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

Вот так отправляет все тела запросов в FiddlerScript'е в лог:
FiddlerApplication.Log.LogString(oSession.GetResponseBodyAsString());
 
  • Thank you
Reactions: trecho and kane16

diamlan

Client
Joined
Sep 14, 2019
Messages
113
Reaction score
18
Points
18
Спасибо за статью, очень пригодилась. Только не могу понять как использовать проксю при работе с эмулятором android. Если через настройки wi-fi в эмуляторе, тогда через fiddler не получится ловить запросы.
Пробрось fiddler с помощью ProxyCap на свою проксю.
 

trecho

Client
Joined
Jul 12, 2018
Messages
171
Reaction score
124
Points
43
Ура! Поддержка русского добавлена!
Спасибо!
 
  • Thank you
Reactions: WLDN

Emmett_Red

Client
Joined
Sep 14, 2019
Messages
96
Reaction score
9
Points
8
Как установить прокси ? Это самый главный вопрос
 

WLDN

Client
Joined
Jul 9, 2015
Messages
357
Reaction score
567
Points
93
Как установить прокси ? Это самый главный вопрос
Привет.

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

Emmett_Red

Client
Joined
Sep 14, 2019
Messages
96
Reaction score
9
Points
8
Привет.

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

PUNKOFFYA

Client
Joined
May 10, 2021
Messages
7
Reaction score
2
Points
3
Привет.

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

Nike59

Client
Joined
Aug 5, 2011
Messages
120
Reaction score
121
Points
43
Замечательная статья! Буду с нетерпением ждать продолжения.
 
  • Thank you
Reactions: WLDN

WLDN

Client
Joined
Jul 9, 2015
Messages
357
Reaction score
567
Points
93
Здравствуйте, а есть ли код для выключения эмуялтора?
Здравствуйте, в предыдущей статье рассматривал этот вопрос, если мне не изменяет память. Выключить можно разными способами, я лично делал через kill process
 

gs517

Client
Joined
May 18, 2013
Messages
138
Reaction score
15
Points
18
Правильно ли я понял. что сторонний прокси в данной схеме использовать не получиться? т.к локальный от фидлера будет использоваться
 
Last edited:

Koqpe

Client
Joined
Dec 23, 2014
Messages
1,099
Reaction score
648
Points
113
Del.
 
Last edited:

matvey60123

Client
Joined
Jun 7, 2020
Messages
1
Reaction score
0
Points
1
Можноли поймать дамп в переменую с екрана сматфона?
По типу команди
adb -s {-Variable.adb_name_devices-} shell uiautomator dump
 

WLDN

Client
Joined
Jul 9, 2015
Messages
357
Reaction score
567
Points
93
Можноли поймать дамп в переменую с екрана сматфона?
По типу команди
adb -s {-Variable.adb_name_devices-} shell uiautomator dump
Взять команду дампа из общего кода и запихнуть в кубик a.Command, не забыть поставить true. В переменной Receiver появится содержимое xml дампа
 

radv

Client
Joined
May 11, 2015
Messages
3,837
Reaction score
2,046
Points
113

Users Who Are Viewing This Thread (Total: 0, Members: 0, Guests: 0)