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

sanya

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

sanya

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

Phoenix78

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

ibred

Client
Регистрация
04.04.2015
Сообщения
3 835
Благодарностей
3 542
Баллы
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
Благодарностей
49
Баллы
28

ibred

Client
Регистрация
04.04.2015
Сообщения
3 835
Благодарностей
3 542
Баллы
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 "Ничего не нашли";
 

sanya

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

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 689
Баллы
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 085
Благодарностей
126
Баллы
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 760
Благодарностей
2 398
Баллы
113
Ребята, подскажите, что такое project.Context ? Его нужно как-то создавать, что-нибудь где-то прописывать или еще че-нить?
Посмотреть вложение 92598
Почему-то постоянно выдает ошибку:
Выполнение действия CSharp OwnCode: . Ссылка на объект не указывает на экземпляр объекта
А Вы уверены, что по Url который Вы указали действительно был отправлен запрос, который содержал ResponseBody?
 

Markoonij

Client
Регистрация
13.10.2020
Сообщения
68
Благодарностей
3
Баллы
8
А Вы уверены, что по Url который Вы указали действительно был отправлен запрос, который содержал ResponseBody?
Да. Т.к. через instance.UseTrafficMonitoring = true; все работает
 

BAZAg

Client
Регистрация
08.11.2015
Сообщения
1 760
Благодарностей
2 398
Баллы
113
  • Спасибо
Реакции: djaga

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 760
Благодарностей
2 398
Баллы
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 не работает.
Вам удалось решить проблему?
 

Markoonij

Client
Регистрация
13.10.2020
Сообщения
68
Благодарностей
3
Баллы
8

SparkRu

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

BAZAg

Client
Регистрация
08.11.2015
Сообщения
1 760
Благодарностей
2 398
Баллы
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
 
  • Спасибо
Реакции: bad robot, SparkRu и djaga

SparkRu

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

Gfoblin

Client
Регистрация
30.05.2013
Сообщения
4 512
Благодарностей
990
Баллы
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 "Ничего не нашли";
При POST - НИХУЯ :(
Блин 3 часа тут по форума лазию не могу найти простое решиние - как выдернуть с пост запроса?!
При гетах всё пашет!!! Где и как глянуть что упала в project.Context["traff"] без всяких фильтров?!
 

Gfoblin

Client
Регистрация
30.05.2013
Сообщения
4 512
Благодарностей
990
Баллы
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
Выручайте как выдернуть post! )
 

BAZAg

Client
Регистрация
08.11.2015
Сообщения
1 760
Благодарностей
2 398
Баллы
113
Выручайте как выдернуть post! )
Уточните что Вы делаете, что получаете, что хотите получить?
Куда мне зайти, куда кликнуть чтобы увидеть нужный запрос чтобы попытаться его поймать?
 

bad robot

Client
Регистрация
07.03.2011
Сообщения
175
Благодарностей
28
Баллы
28
в CEF (Chrome) перехват трафика срабатывает 1 раз на 100 попыток, в Chromium работает как часы - может кому полезно будет и вы не убъете время на эксперементы, как я.
 
  • Спасибо
Реакции: Gfoblin

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