Перехватить responce

sanya

Client
Регистрация
08.09.2015
Сообщения
184
Благодарностей
48
Баллы
28
День добрый, каким образом можно перехватить ответ от пост запроса? Получается я нажимаю кнопку регистрации и сайт по цепочке шлет запросы, в трафике посмотрел есть нужные мне данные. Так вот я хотел бы отловить ответ от определенного запроса, но не прибегая к созданию собственного постзапроса. Может понятно объяснил, а может и нет)
 

sanya

Client
Регистрация
08.09.2015
Сообщения
184
Благодарностей
48
Баллы
28

Phoenix78

Client
Read only
Регистрация
06.11.2018
Сообщения
11 790
Благодарностей
5 676
Баллы
113

ibred

Client
Регистрация
04.04.2015
Сообщения
3 835
Благодарностей
3 534
Баллы
113
Выполнить C# код перед выполнением запроса \ перехода на сайт. Можно даже запустить в начале проекта.
C#:
instance.UseTrafficMonitoring = true;

После того, как запрос выполнен, забираем Response запроса.
Вместо https://zennolab.com/ru/ нужно указать нужный URL.
C#:
var traffic = instance.ActiveTab.GetTraffic();
foreach(var t in traffic) {
    if (t.Url=="https://zennolab.com/ru/") {
        return System.Text.Encoding.UTF8.GetString(t.ResponseBody);
    }
}
return "Ничего не нашли";
 
  • Спасибо
Реакции: Hannes, sanya и one

sanya

Client
Регистрация
08.09.2015
Сообщения
184
Благодарностей
48
Баллы
28

ibred

Client
Регистрация
04.04.2015
Сообщения
3 835
Благодарностей
3 534
Баллы
113
когда один раз прочитал, второй раз уже не находит
Так и должно быть.
Как вариант, Вы можете сохранить трафик в project.Context, а уже после обращаться к нему.

C#:
project.Context["traff"] = instance.ActiveTab.GetTraffic();
C#:
var traffic = project.Context["traff"];
foreach(var t in traffic) {
    if (t.Url=="https://zennolab.com/ru/") {
        return System.Text.Encoding.UTF8.GetString(t.ResponseBody);
    }
}
return "Ничего не нашли";
 

boosh1c

Client
Регистрация
30.03.2021
Сообщения
7
Благодарностей
0
Баллы
1
Подскажите пожалуйста люди добрые, почему трафик сохраняется в
project.Context[] через раз, что в ПМ, что в ЗП. Второй день залипаю, пробовал и паузы и игнорировать GET/POST и работать через таблицу, и еще много всего.
Когда пробую сохранить Traff в таблицу в 50% случаях сохранятеся только первая строка(Оглавление: Method|ResultCode|Url...)
а содержимое пустое, будто нет запросов в трафике, хотя их там много. Версия 7.4

П.С. пожалуйста не пишите "instance.UseTrafficMonitoring = true;" - это пробовал первым делом на разных стадиях выполнения и по несколько раз.
 

Phoenix78

Client
Read only
Регистрация
06.11.2018
Сообщения
11 790
Благодарностей
5 676
Баллы
113
Подскажите пожалуйста люди добрые, почему трафик сохраняется в
project.Context[] через раз, что в ПМ, что в ЗП. Второй день залипаю, пробовал и паузы и игнорировать GET/POST и работать через таблицу, и еще много всего.
Когда пробую сохранить Traff в таблицу в 50% случаях сохранятеся только первая строка(Оглавление: Method|ResultCode|Url...)
а содержимое пустое, будто нет запросов в трафике, хотя их там много. Версия 7.4

П.С. пожалуйста не пишите "instance.UseTrafficMonitoring = true;" - это пробовал первым делом на разных стадиях выполнения и по несколько раз.
точно все запросы прогрузились ?
 

boosh1c

Client
Регистрация
30.03.2021
Сообщения
7
Благодарностей
0
Баллы
1
точно все запросы прогрузились ?
Я не уверен что все прогружаются, но может и не обязательно чтобы все прогрузились?
Прогруженных то запросов точно много, а в таблицу записывается только первая строка, будто запросов нет совсем. Но при этом команда GetTraffic() получается отрабатывает, только не корректно.
78887

Пробовал большие паузы около 5с перед instance.ActiveTab.GetTraffic(); ситуация та же, что и если паузы не делать совсем, отрабатывает 50 на 50.
Причем если, когда проект дойдет до конца запустить кубик GetTraffic(); он 100% запишет трафик.
 
Последнее редактирование:

bizzon

Client
Регистрация
08.09.2015
Сообщения
1 075
Благодарностей
125
Баллы
63
С этим делом нужно разбираться, у меня был похожий вариант.
 

Markoonij

Client
Регистрация
13.10.2020
Сообщения
68
Благодарностей
3
Баллы
8
Всем привет!
В PM все четко работает, а в ZP выдает ошибку:

Выполнение действия CSharp OwnCode: RequestBody. Массив не может быть неопределенным.
Имя параметра: bytes


В чем может быть дело?
 

Markoonij

Client
Регистрация
13.10.2020
Сообщения
68
Благодарностей
3
Баллы
8
Выполнить C# код перед выполнением запроса \ перехода на сайт. Можно даже запустить в начале проекта.
C#:
instance.UseTrafficMonitoring = true;

После того, как запрос выполнен, забираем Response запроса.
Вместо https://zennolab.com/ru/ нужно указать нужный URL.
C#:
var traffic = instance.ActiveTab.GetTraffic();
foreach(var t in traffic) {
    if (t.Url=="https://zennolab.com/ru/") {
        return System.Text.Encoding.UTF8.GetString(t.ResponseBody);
    }
}
return "Ничего не нашли";
Как можно сразу получить в переменную ResponseBody + RequestBody ?
 

Markoonij

Client
Регистрация
13.10.2020
Сообщения
68
Благодарностей
3
Баллы
8
Так и должно быть.
Как вариант, Вы можете сохранить трафик в project.Context, а уже после обращаться к нему.

C#:
project.Context["traff"] = instance.ActiveTab.GetTraffic();
C#:
var traffic = project.Context["traff"];
foreach(var t in traffic) {
    if (t.Url=="https://zennolab.com/ru/") {
        return System.Text.Encoding.UTF8.GetString(t.ResponseBody);
    }
}
return "Ничего не нашли";
Ребята, подскажите, что такое project.Context ? Его нужно как-то создавать, что-нибудь где-то прописывать или еще че-нить?
92598

Почему-то постоянно выдает ошибку:
Выполнение действия CSharp OwnCode: . Ссылка на объект не указывает на экземпляр объекта
 
Последнее редактирование:

BAZAg

Client
Регистрация
08.11.2015
Сообщения
1 743
Благодарностей
2 382
Баллы
113
Ребята, подскажите, что такое project.Context ? Его нужно как-то создавать, что-нибудь где-то прописывать или еще че-нить?
Посмотреть вложение 92598
Почему-то постоянно выдает ошибку:
Выполнение действия CSharp OwnCode: . Ссылка на объект не указывает на экземпляр объекта
А Вы уверены, что по Url который Вы указали действительно был отправлен запрос, который содержал ResponseBody?
 

Markoonij

Client
Регистрация
13.10.2020
Сообщения
68
Благодарностей
3
Баллы
8
Так РАБОТАЕТ:
C#:
instance.UseTrafficMonitoring = true;
C#:
var traffic = instance.ActiveTab.GetTraffic();
foreach(var t in traffic) {
    if (t.Url=="https://mt-auth.kambicdn.org/player/api/v2019/rb/punter/login.json?market=MT&lang=en_GB&channel_id=1&client_id=2&settings=true") {
        return System.Text.Encoding.UTF8.GetString(t.ResponseBody);
    }
}

return "Ничего не нашли";
Вот так НЕ РАБОТАЕТ:
C#:
project.Context["traff"] = instance.ActiveTab.GetTraffic();
C#:
var traffic = project.Context["traff"];
foreach(var t in traffic) {
    if (t.Url=="https://mt-auth.kambicdn.org/player/api/v2019/rb/punter/login.json?market=MT&lang=en_GB&channel_id=1&client_id=2&settings=true") {
        return System.Text.Encoding.UTF8.GetString(t.ResponseBody);
    }
}

return "Ничего не нашли";
Выдает ошибку в логе: Выполнение действия CSharp OwnCode: . Ссылка на объект не указывает на экземпляр объекта
 

BAZAg

Client
Регистрация
08.11.2015
Сообщения
1 743
Благодарностей
2 382
Баллы
113
Вот так будет работать (строчка instance.UseTrafficMonitoring = true нужна в любом случае).
C#:
instance.UseTrafficMonitoring = true;
project.Context["traff"] = instance.ActiveTab.GetTraffic();
C#:
var traffic = project.Context["traff"];
foreach(var t in traffic) {
    if (t.Url=="https://mt-auth.kambicdn.org/player/api/v2019/rb/punter/login.json?market=MT&lang=en_GB&channel_id=1&client_id=2&settings=true") {
        return System.Text.Encoding.UTF8.GetString(t.ResponseBody);
    }
}

return "Ничего не нашли";
92710

92711

92712
 
  • Спасибо
Реакции: Markoonij
Регистрация
18.05.2017
Сообщения
71
Благодарностей
5
Баллы
8
Всем привет!
В PM все четко работает, а в ZP выдает ошибку:

Выполнение действия CSharp OwnCode: RequestBody. Массив не может быть неопределенным.
Имя параметра: bytes


В чем может быть дело?
У меня такая же история в PM работает в ZP не работает.
Вам удалось решить проблему?
 

SparkRu

Client
Регистрация
24.06.2021
Сообщения
13
Благодарностей
0
Баллы
1
Доброй ночи. А как можно получить Url содержащий определенный текст?
Например адрес содержащий "search"
 

BAZAg

Client
Регистрация
08.11.2015
Сообщения
1 743
Благодарностей
2 382
Баллы
113
Доброй ночи. А как можно получить Url содержащий определенный текст?
Например адрес содержащий "search"
C#:
string text = "search"; // Какое слово должно быть в Url
int max = 10; // Сколько попыток искать сделать
instance.UseTrafficMonitoring = true;

for(int i=0;i<max;i++) {
    foreach(var t in instance.ActiveTab.GetTraffic()) {
        if (t.Url.Contains(text)) return t.Url; // Если нашли
    }
    Thread.Sleep(1*1000);
}

return string.Empty; // Если не нашли
98193
 
  • Спасибо
Реакции: SparkRu и djaga

SparkRu

Client
Регистрация
24.06.2021
Сообщения
13
Благодарностей
0
Баллы
1
Благодарю за подробный ответ )
 

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