Поймать все редиректы из url c#

arbplv

Client
Регистрация
28.03.2020
Сообщения
373
Благодарностей
23
Баллы
18
Стоит задача поймать все редиректы и записать их, например в список.
Пробовал вот такую штуку, в итоге получаю 100 строчек уже после всех редиректов.
Что нужно исправить чтобы поймать все редиректы?
Пробовал и так
C#:
project.Lists["list"].Clear();
int t = 0;
Tab tab = instance.ActiveTab;
System.Threading.Thread.Sleep(500);
tab.Navigate("site.ru", "");

while(t<100)
{
string url = tab.URL;
project.Lists["list"].Add(url);
    t=t+1;
}
и так
C#:
project.Lists["list"].Clear();
int t = 0;
System.Threading.Thread.Sleep(500);
instance.ActiveTab.Navigate("site.ru", "");

while(t<100)
{
string url = instance.ActiveTab.URL;
project.Lists["list"].Add(url);
    t=t+1;
}
Где ошибка, что не учитываю?
Выручайте плиз.
Спасибо
 

Phoenix78

Client
Read only
Регистрация
06.11.2018
Сообщения
11 790
Благодарностей
5 689
Баллы
113
ну наверно потому что Navigate не сразу возвращает управление в код, а спустя какое то время. и за то время пока она там исполняется все уже устаканилось.
возможно даже что редиректы даже не успевают отобразиться в ActiveTab.URL так как само по себе обращение к браузеру ну очень затратное по времени операция.
можно посоветовать попробовать проанализировать данные в из монитора трафика.
 
  • Спасибо
Реакции: arbplv

Yuriy Zymlex

Moderator
Команда форума
Регистрация
24.10.2016
Сообщения
6 366
Благодарностей
3 292
Баллы
113
Перед открытием страницы, надо выполнять instance.UseTrafficMonitoring = true;

Пока имеется баг, который не позволяет собрать все редиректы.
 
Последнее редактирование:
  • Спасибо
Реакции: arbplv

arbplv

Client
Регистрация
28.03.2020
Сообщения
373
Благодарностей
23
Баллы
18
Перед открытием страницы, надо выполнять instance.UseTrafficMonitoring = true;

У хрома пока имеется баг, который не позволяет собрать все редиректы.
C#:
project.Lists["list"].Clear();
int t = 0;
System.Threading.Thread.Sleep(500);
instance.UseTrafficMonitoring = true;
instance.ActiveTab.Navigate("site", "");

while(t<100)
{
string url = instance.ActiveTab.URL;
project.Lists["time_events"].Add(url);
    t=t+1;
}
Вот так попробовал, ничего не изменилось. Движок хром. В окне трафика вижу все редиректы, в список чет они не хотят складываться. Где может быть ошибка?
 

Phoenix78

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

Yuriy Zymlex

Moderator
Команда форума
Регистрация
24.10.2016
Сообщения
6 366
Благодарностей
3 292
Баллы
113
Пока имеется баг, который не позволяет собрать все редиректы.
Есть таска.
 

arbplv

Client
Регистрация
28.03.2020
Сообщения
373
Благодарностей
23
Баллы
18

Yuriy Zymlex

Moderator
Команда форума
Регистрация
24.10.2016
Сообщения
6 366
Благодарностей
3 292
Баллы
113

arbplv

Client
Регистрация
28.03.2020
Сообщения
373
Благодарностей
23
Баллы
18
Если сайт позволяет - попробуйте.
Поменял движок на файрфокс, взял с того топика код, но у меня чет он не работает
Посмотрите все ли я правильно понимаю
C#:
instance.UseTrafficMonitoring = true;//активируем запись трафика
instance.ActiveTab.Navigate("site.ru", "");//переходим на стриницу с которой будем редиректится
string url_pattern = "yandex.ru"; //то что мы ищем среди всех редиректов, к примеру тут мы ищем редирект на яндекс
var traffic = instance.ActiveTab.GetTraffic();//получаем трафик в эту переменную, какой то массив
foreach(TrafficItem t in traffic) //пробегаемся по каждой строчке этого массива
{
    if (t.Url.Contains(url_pattern)) // смотрим есть ли в урл "yandex.ru"
    {
        project.Variables["var1"].Value = System.Text.Encoding.UTF8.GetString(t.ResponseBody);//записали в программную переменную
        project.SendInfoToLog("успех", false);//в лог успех
        return 0;
    }
}
throw new Exception("фиаско");//если не нашли
Что делаю не так?
Можно ли всю переменную засунуть в список или куда нидь, хоть глянуть что там есть и как искать, я пробовал у меня ошибку выдает2020-10-04_20-09-05.jpg
 

arbplv

Client
Регистрация
28.03.2020
Сообщения
373
Благодарностей
23
Баллы
18
Почитал документацию, взял инфу оттуда, все работает, видимо была где от ошибка...
Еще вопрос
Нужно ли после того как взял ссылку из редиректов отключать дополнительный сбор трафика? instance.UseTrafficMonitoring = false? 18 строчка в коде
C#:
instance.UseTrafficMonitoring = true;
Tab tab = instance.ActiveTab;
tab.Navigate("site.ru", "");
if (tab.IsBusy) tab.WaitDownloading();
// get list of requests
var traffic = instance.ActiveTab.GetTraffic();
// get some data from items and log it
foreach(var t in traffic)
    if(t.Url.Contains(@"sport"))
    {
    //project.SendInfoToLog(string.Format("Url: {0}\r\n Method: {1}\r\n Result: {2}", t.Url, t.Method, t.ResultCode));
    project.Lists["time_events"].Add(t.Url);
    }
// get list of request second time
traffic = instance.ActiveTab.GetTraffic();
// print count of items, it will be 0, because the previous method call removed the old items
project.SendInfoToLog("Second count of traffic elements = " + traffic.Count());
    instance.UseTrafficMonitoring = false;
 

ZComand

Client
Регистрация
02.02.2016
Сообщения
57
Благодарностей
63
Баллы
18
Нужно ли после того как взял ссылку из редиректов отключать дополнительный сбор трафика? instance.UseTrafficMonitoring = false? 18 строчка в коде
Это на твое усмотрение. Вообще не обязательно ))
 

loka23

Client
Регистрация
02.08.2019
Сообщения
127
Благодарностей
10
Баллы
18
Нужно поменять движок и попробовать на файрфоксе?
У меня наоборот firefox по умолчанию и то работал, то не работал отлов запросов. А переключил на chrome и пока вроде всё нормально. Поэтому эксперементируйте сменой движков.
Всю голову сломал уже) Почему то ловит запросы то нет... а оказалось баг
 

Yuriy Zymlex

Moderator
Команда форума
Регистрация
24.10.2016
Сообщения
6 366
Благодарностей
3 292
Баллы
113

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