Проблема с редиректом через c# ZennoPoster.HttpGet

doc

Client
Регистрация
30.03.2012
Сообщения
8 684
Благодарностей
4 641
Баллы
113
Есть у меня шаблон для реги мэйловских почт на пост гет на кубиках. И ради интереса решил я его перенести на c#. Проблему я словил уже на втором запросе. Суть проблемы в том, что при гет запросе происходит несколько редиректов и, если на старте ссылка имеет вид https://r.mail.ru/..., то последний редирект отправляет уже по ссылке вида https://e.mail.ru/...

С кубиком проблем нет. Как я понимаю, он автоматически подхватывает новый хост(e.mail.ru) и, соответственно, все заголовки на финальном редиректе правильные. Через код всё нет так. Хост не подхватывается и остается прежний (r.mail.ru). В результате ответ я получаю левый.

Вот что выбивает фидлер на последний редирект через код


Все редиректы в фидлере, если запрос через кубик


Все редиректы в фидлере, если запрос через код


Данные кубика





Код
C#:
string reg_link = project.Variables["reg_link"].Value;
string cookies = project.Variables["cookies"].Value;

string answer = ZennoPoster.HttpGet(
    reg_link,
    project.Variables["proxy"].Value,
    "UTF-8",
    ZennoLab.InterfacesLibrary.Enums.Http.ResponceType.HeaderAndBody,
    30000,
    cookies,
    project.Profile.UserAgent,
    true,
    10,
    new [] {
        "Host: r.mail.ru",
        "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8",
        "Accept-Language: "+project.Profile.AcceptLanguage,
        "Accept-Encoding: "+project.Profile.AcceptEncoding,
        "Referer: https://mail.ru/",
        "Connection: keep-alive"
    }
);


return answer;
Если этого мало - прилагаю проблемную часть проекта. Там 2 варианта, различие которых только в последнем блоке. Переменная прокси по умолчанию 127.0.0.1:8888 под фидлер

В общем, хотелось бы узнать, в чем косяк, помогите разобраться.
 

Вложения

ssXXXss

Client
Регистрация
23.12.2014
Сообщения
7 379
Благодарностей
2 041
Баллы
113
на гетах нет редиректа, тебе выдало 302 код состояния о чём говорит что это редирект, парсишь location и переходишь по нужной ссылке
 

doc

Client
Регистрация
30.03.2012
Сообщения
8 684
Благодарностей
4 641
Баллы
113
на гетах нет редиректа, тебе выдало 302 код состояния о чём говорит что это редирект, парсишь location и переходишь по нужной ссылке
https://help.zennolab.com/en/v5/zennoposter/5.8/webframe.html#ZennoLab.CommandCenter~ZennoLab.CommandCenter.ZennoPoster~HttpGet.html

UseRedirect
Type: System.Boolean
true if use redirect; otherwise, false.

MaxRedirectCount
Type: System.Int32
Maximum count of redirects.
 

Dimionix

Moderator
Регистрация
09.04.2011
Сообщения
3 068
Благодарностей
3 122
Баллы
113
В строке 6 кода не хватает протокола:
Код:
"http://" + project.Variables["proxy"].Value, // или socks5://
Ну или в переменной проекта прокси писать сразу с протоколом.
 
Последнее редактирование:

ssXXXss

Client
Регистрация
23.12.2014
Сообщения
7 379
Благодарностей
2 041
Баллы
113
https://help.zennolab.com/en/v5/zennoposter/5.8/webframe.html#ZennoLab.CommandCenter~ZennoLab.CommandCenter.ZennoPoster~HttpGet.html

UseRedirect
Type: System.Boolean
true if use redirect; otherwise, false.

MaxRedirectCount
Type: System.Int32
Maximum count of redirects.
сколько уже гетов переписал ни разу не видел что бы редирекнуло, на какой адрес послал на тот ответ и пришёл с редиректом а вот потом делаешь новый запрос на ридерект
 

ssXXXss

Client
Регистрация
23.12.2014
Сообщения
7 379
Благодарностей
2 041
Баллы
113
В строке 10 кода не хватает протокола:
"http://" + cookies,
Ну или во второй)), или в переменной проекта прокси писать сразу с протоколом.
а что это даст, а если я захожу без кук ???
 

Dimionix

Moderator
Регистрация
09.04.2011
Сообщения
3 068
Благодарностей
3 122
Баллы
113

doc

Client
Регистрация
30.03.2012
Сообщения
8 684
Благодарностей
4 641
Баллы
113
сколько уже гетов переписал ни разу не видел что бы редирекнуло, на какой адрес послал на тот ответ и пришёл с редиректом а вот потом делаешь новый запрос на ридерект
на скрине 4 запроса. это редиректы одного.
В строке 6 кода не хватает протокола:
Код:
"http://" + project.Variables["proxy"].Value, // или socks5://
Ну или в переменной проекта прокси писать сразу с протоколом.
для хттп прокси это необязательно
 

ssXXXss

Client
Регистрация
23.12.2014
Сообщения
7 379
Благодарностей
2 041
Баллы
113
он имеет вот про это ввиду

2016-10-03_124542.png

выдало редирект, парсишь локатион и делаешь новый запрос
 

Dimionix

Moderator
Регистрация
09.04.2011
Сообщения
3 068
Благодарностей
3 122
Баллы
113
на скрине 4 запроса. это редиректы одного.

для хттп прокси это необязательно
В кубике - да, а в коде, вроде, нужно указывать. Хз, конечно, но я всегда прописываю протокол.
 

doc

Client
Регистрация
30.03.2012
Сообщения
8 684
Благодарностей
4 641
Баллы
113
он имеет вот про это ввиду

Посмотреть вложение 15630

выдало редирект, парсишь локатион и делаешь новый запрос
зенно предоставляет метод, который должен сам редиректить. Либо я что-то делаю не так, либо он работает не правильно. Я хочу разобраться в этом, а не делать каждый редирект отдельным запросом
 

ssXXXss

Client
Регистрация
23.12.2014
Сообщения
7 379
Благодарностей
2 041
Баллы
113
а зачем вообще такие манёрвы, ну и иди сразу на страницу регистрции, всё равно на неё и ридеректит, или тебе редирект нужен ???
 

ssXXXss

Client
Регистрация
23.12.2014
Сообщения
7 379
Благодарностей
2 041
Баллы
113
на скрине 4 запроса. это редиректы одного.

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

doc

Client
Регистрация
30.03.2012
Сообщения
8 684
Благодарностей
4 641
Баллы
113
а зачем вообще такие манёрвы, ну и иди сразу на страницу регистрции, всё равно на неё и ридеректит, или тебе редирект нужен ???
хочу, чтобы все было достоверно. В конечном счете это не важно. Важно понять, что с моим редиректом через код
 

doc

Client
Регистрация
30.03.2012
Сообщения
8 684
Благодарностей
4 641
Баллы
113
я понимаю что в фидлере ты их увидишь, но ты не получишь ответ 200 сразу гет запросом, есть сайты где просто делаешь повторный гет на эту же сылку и приходит правильный ответ, а есть где надо парсить локатион
еще раз. В кубике гет запроса есть настройки редиректа. Через кубик всё правильно редиректится. В методе c# есть настройки редиректа. Редиректится не правильно. Тему создал, чтобы помогли найти косяк, будь это мои неправильные действия или неправильная работа самого метода
 

Dimionix

Moderator
Регистрация
09.04.2011
Сообщения
3 068
Благодарностей
3 122
Баллы
113
А доп. заголовки вообще передаются, если писать просто new[] { ?
Попробуй заменить на AdditionalHeaders: new[] {
 

doc

Client
Регистрация
30.03.2012
Сообщения
8 684
Благодарностей
4 641
Баллы
113

Dimionix

Moderator
Регистрация
09.04.2011
Сообщения
3 068
Благодарностей
3 122
Баллы
113
В общем, без "Host: r.mail.ru" запрос нормально отрабатывает.
И, кстати, в кубике этот заголовок у тебя прописан в строку, где должен быть UA. Если и там его прописать правильно, то запрос тоже не пройдет.
 
Последнее редактирование:
  • Спасибо
Реакции: doc

doc

Client
Регистрация
30.03.2012
Сообщения
8 684
Благодарностей
4 641
Баллы
113
В общем, без "Host: r.mail.ru" запрос нормально отрабатывает. Не нужен он походу.
И, кстати, в кубике этот заголовок у тебя прописан в строку, где должен быть UA. Если и там его прописать правильно, то запрос тоже не пройдет.
действительно, и хосты сами подхватываются правильные. Интересно, задумано ли так.
Спасибо
 

ssXXXss

Client
Регистрация
23.12.2014
Сообщения
7 379
Благодарностей
2 041
Баллы
113
можно с хостом но вот так "Host: mail.ru" так на главную страницу кидает собака )
 

patlat

Client
Регистрация
21.09.2016
Сообщения
175
Благодарностей
47
Баллы
28
а не сложно будет запостить скрины фидлера:
- заголовки которые отдаёт зена
- заголовки которые отдаёт ваш метод C#
 

doc

Client
Регистрация
30.03.2012
Сообщения
8 684
Благодарностей
4 641
Баллы
113
а не сложно будет запостить скрины фидлера:
- заголовки которые отдаёт зена
- заголовки которые отдаёт ваш метод C#
спасибо, проблема решена выше убиранием хоста из прописанных заголовков. Как оказалось, метод сам его подхватывает и отдает правильные хосты
 

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