Это означает возможность добавления и JS кода? То есть можно ли уже сейчас построить ту самую банальную зависимость во входящих настройках о которых вторит молва, когда выбрано одно значение - другое меню скрывается и т.д.[+] Добавлено ручное редактирование HTML кода BotUI.
Верно ли я понимаю, что это то о чём я когда-то писал, но только без брейкпоинтов?[+] Добавлена возможность подмены содержимого запросов и ответов с помощью методов ChangeRequest и ChangeResponse.
Спасибо![+] Улучшенная обработка подключений подробности читайте в этой статье.
А как это юзать?Это означает возможность добавления и JS кода? То есть можно ли уже сейчас построить ту самую банальную зависимость во входящих настройках о которых вторит молва, когда выбрано одно значение - другое меню скрывается и т.д.
Верно ли я понимаю, что это то о чём я когда-то писал, но только без брейкпоинтов?
То есть теперь перед отправкой определенного запроса браузером, можно подменить отправляемые данные?
Если это действительно так, то это...
Спасибо!
Добавлять JS можно. Да, новые методы реализуют то, о чем вы писали без брейкпоинтов.Это означает возможность добавления и JS кода? То есть можно ли уже сейчас построить ту самую банальную зависимость во входящих настройках о которых вторит молва, когда выбрано одно значение - другое меню скрывается и т.д.
Верно ли я понимаю, что это то о чём я когда-то писал, но только без брейкпоинтов?
То есть теперь перед отправкой определенного запроса браузером, можно подменить отправляемые данные?
Если это действительно так, то это...
Спасибо!
Ссылки на методы даны в описании.А как это юзать?
Это просто бомба! Я в восторге!Добавлять JS можно. Да, новые методы реализуют то, о чем вы писали без брейкпоинтов.
Я там не понимаю ничегоДобавлять JS можно. Да, новые методы реализуют то, о чем вы писали без брейкпоинтов.
Ссылки на методы даны в описании.
Логично предположить что нетЕщё один вопрос: если я создал шаблон с BotUI в котором у меня размещен скрипт или свое оформление через правку HTML в ручном режиме, и скинул его клиенту с версией ниже, чем 5.11.2.0, но поддержкой BotUI. Будут ли работать и корректно отображаться все то, что я прописал в BotUI?
Должны отображаться, но не гарантируем.Ещё один вопрос: если я создал шаблон с BotUI в котором у меня размещен скрипт или свое оформление через правку HTML в ручном режиме, и скинул его клиенту с версией ниже, чем 5.11.2.0, но поддержкой BotUI. Будут ли работать и корректно отображаться все то, что я прописал в BotUI?
В прошлых версиях BotUI просто закрыт для ручного редактирования, а сейчас его открыли. Поэтому Ваше "логично" не логичноЛогично предположить что нет
Буду проверять, спасибо.Должны отображаться, но не гарантируем.
Хороший ответ поддержкиДолжны отображаться, но не гарантируем.
это значит что с яндекс или ВК и т.д. такая подмена не прокатит?[+] Добавлена возможность подмены содержимого запросов и ответов с помощью методов ChangeRequest и ChangeResponse.
Ура сделали, то что я года 2 назад предлагал, но пришлось делать через Proxomitron, правда без https поддержки
Открываете окно Траффик в ProjectMaker. в браузере заходите на сайт с которым работаете и смотрите контент запросов в браузере.Я там не понимаю ничего
instance.ChangeRequest(@"(?<=https://mc\.yandex\.ru/webvisor/).*", new List<string> { @"(?<=wv-data=).*" }, new List<string> { "NODATA" }, true);
Tab tab = instance.ActiveTab;
if ((tab.IsVoid) || (tab.IsNull)) return -1;
if (tab.IsBusy) tab.WaitDownloading();
tab.Navigate("lessons.zennolab.com", "");
if (tab.IsBusy) tab.WaitDownloading();
Через Proxomitron нельзя перехватить https, через зенку я так понял из примера - можно!это значит что с яндекс или ВК и т.д. такая подмена не прокатит?
А можно какие-то пару примеров для чего можно или нужно использовать подмену контента запросов и ответов?Открываете окно Траффик в ProjectMaker. в браузере заходите на сайт с которым работаете и смотрите контент запросов в браузере.
BotUI запускается двойным кликом по проекту в ZennoPoster или из контексного меню, которое открывается по правому клику на проекте.Господа, подскажите нубу, как запустить BotUI?
Я сделал небольшой UI из нескольких элементов, но не могу понять, как теперь его запустить и как оно может менять пепеменные (и может ли?)?
Поясните пожалуйста, что значит более универсальным. Заголовки запроса не меняются.Сделайте пожалуста instance.ChangeRequest более универсальным:
instance.ChangeRequest(string Regexp, Action<string, string> requestBodyAction), где requestBodyAction (string requestBody) возвращает тело запроса.
Точно так же и с ChangeResponse.
Заголовки? Что? Хотя... Заголовки тоже не помешало бы )Поясните пожалуйста, что значит более универсальным. Заголовки запроса не меняются.
Отличный способ объяснить свою мысль, которую не можешь сформулировать.Если не понимаете, ну и ладно, забейте.
Отличный способ объяснить свою мысль, которую не можешь сформулировать.
Взять- вытащить - это просто распарсить запрос. Причем ту подмена контента? Просто поясните на примере, что хотите предложить и мы попробуем сделать. а не возмущайтесь.Заголовки? Что? Хотя... Заголовки тоже не помешало бы )
Сейчас этот метод работает только на изменение. Что делать если нужно что-то взять-вытащить? Что делать если нужны более сложные условия изменения? Если не понимаете, ну и ладно, забейте.
Пример на аудиокапче рекапчи2 которая уже у всех забанена но все таки:Взять- вытащить - это просто распарсить запрос. Причем ту подмена контента? Просто поясните на примере, что хотите предложить и мы попробуем сделать. а не возмущайтесь.
Пример на аудиокапче рекапчи2 которая уже у всех забанена но все таки:
Когда прогружается капча, аудио уже есть в ответе от сервера и не нужно нажимать на кнопку "скачать". При нажатии на кнопку сервер уже понимат что аудио слушать не будут, а только скачивают.
Возвращаемся к первому запросу - этот запрос выходит из ифрейма, то есть его перехвататить на стороне javascript нельзя, но можно перехватить черезе mitm proxy со своим сертификатом, что не есть особо удобно так как он еще должен хендлить внешний прокси исходящий от инстанса.
Есть ли в Зенопостере методы которые могут перехватить это запрос по регулярке как в instance.ChangeRequest, чтобы можно было вытащить из этого запроса аудиодорожку?
Это как раз более сложные и частные вещи. У нас скорее общий функционал. Подумаем над реализацией такого.Еще пример, попроще:
Есть тело изходящего запроса, тип данных - json. Его нужно десериализовать, поменять, сериализовть, и выдать серверу как будто так и было. Есть ли в Зенопостере метод который это сможет сделать? (без использования js-иньекций)
Зачем привязываться к примеру? Я написал метод который нужен, он универсальныйПо JSON хотелось бы конкретный пример такого запроса, который нужно обработать и выдать.
в requestBodyAction происходят все манипуляции с телом запроса\ответа, и возвращается это самое тело изменненое либо нет (когда нужно что-то взять из тела и положить в зп переменную, например).instance.ChangeRequest(string Regexp, Action<string, string> requestBodyAction), где requestBodyAction (string requestBody) возвращает тело запроса.
public CefReturnValue OnBeforeResourceLoad(IWebBrowser browserControl, IBrowser browser, IFrame frame, IRequest request, IRequestCallback callback)
{
if (!callback.IsDisposed)
{
using (callback)
{
if (request.Method == "POST" && Regex.IsMatch(request.Url, @"del"))
{
using (var postData = request.PostData)
{
if (postData != null)
{
var elements = postData.Elements;
var charSet = request.GetCharSet();
foreach (var element in elements)
{
if (element.Type == PostDataElementType.Bytes)
{
var body = element.GetBody(charSet);
if (body.Contains("del") && body.Contains("del"))
{
body = Regex.Replace(body, @"del", "del");
body = Regex.Replace(body, @"del", "del");
element.Bytes = Encoding.Default.GetBytes(body);
var headers = request.Headers;
if (headers["Cookie"] != null)
{
var cookie = headers["Cookie"];
if (Regex.IsMatch(cookie, @"del"))
{
cookie = Regex.Replace(cookie, @"del", "del");
headers["Cookie"] = cookie;
}
}
request.Headers = headers;
}
}
}
}
}
}
}
}
return CefReturnValue.Continue;
}