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

  • Автор темы Автор темы doc
  • Дата начала Дата начала

doc

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

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

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


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


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


Данные кубика
0606575de01f983764124ba15b1f5aab.png


f88be3c5f583841451a87ffd691f391a.png



Код
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 под фидлер

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

Вложения

  • test.xmlz
    test.xmlz
    18,3 KB · Просмотры: 12
на гетах нет редиректа, тебе выдало 302 код состояния о чём говорит что это редирект, парсишь location и переходишь по нужной ссылке
 
на гетах нет редиректа, тебе выдало 302 код состояния о чём говорит что это редирект, парсишь location и переходишь по нужной ссылке
https://help.zennolab.com/en/v5/zen...nnoLab.CommandCenter.ZennoPoster~HttpGet.html

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

MaxRedirectCount
Type: System.Int32
Maximum count of redirects.
 
В строке 6 кода не хватает протокола:
Код:
Развернуть Свернуть Копировать
"http://" + project.Variables["proxy"].Value, // или socks5://
Ну или в переменной проекта прокси писать сразу с протоколом.
 
Последнее редактирование:
https://help.zennolab.com/en/v5/zen...nnoLab.CommandCenter.ZennoPoster~HttpGet.html

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

MaxRedirectCount
Type: System.Int32
Maximum count of redirects.
сколько уже гетов переписал ни разу не видел что бы редирекнуло, на какой адрес послал на тот ответ и пришёл с редиректом а вот потом делаешь новый запрос на ридерект
 
В строке 10 кода не хватает протокола:
"http://" + cookies,
Ну или во второй)), или в переменной проекта прокси писать сразу с протоколом.
а что это даст, а если я захожу без кук ???
 
сколько уже гетов переписал ни разу не видел что бы редирекнуло, на какой адрес послал на тот ответ и пришёл с редиректом а вот потом делаешь новый запрос на ридерект
на скрине 4 запроса. это редиректы одного.
В строке 6 кода не хватает протокола:
Код:
Развернуть Свернуть Копировать
"http://" + project.Variables["proxy"].Value, // или socks5://
Ну или в переменной проекта прокси писать сразу с протоколом.
для хттп прокси это необязательно
 
он имеет вот про это ввиду

2016-10-03_124542.png

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

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

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

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

для хттп прокси это необязательно
я понимаю что в фидлере ты их увидишь, но ты не получишь ответ 200 сразу гет запросом, есть сайты где просто делаешь повторный гет на эту же сылку и приходит правильный ответ, а есть где надо парсить локатион
 
а зачем вообще такие манёрвы, ну и иди сразу на страницу регистрции, всё равно на неё и ридеректит, или тебе редирект нужен ???
хочу, чтобы все было достоверно. В конечном счете это не важно. Важно понять, что с моим редиректом через код
 
я понимаю что в фидлере ты их увидишь, но ты не получишь ответ 200 сразу гет запросом, есть сайты где просто делаешь повторный гет на эту же сылку и приходит правильный ответ, а есть где надо парсить локатион
еще раз. В кубике гет запроса есть настройки редиректа. Через кубик всё правильно редиректится. В методе c# есть настройки редиректа. Редиректится не правильно. Тему создал, чтобы помогли найти косяк, будь это мои неправильные действия или неправильная работа самого метода
 
А доп. заголовки вообще передаются, если писать просто new[] { ?
Попробуй заменить на AdditionalHeaders: new[] {
 
В общем, без "Host: r.mail.ru" запрос нормально отрабатывает.
И, кстати, в кубике этот заголовок у тебя прописан в строку, где должен быть UA. Если и там его прописать правильно, то запрос тоже не пройдет.
 
Последнее редактирование:
  • Оценить
Реакции: doc
В общем, без "Host: r.mail.ru" запрос нормально отрабатывает. Не нужен он походу.
И, кстати, в кубике этот заголовок у тебя прописан в строку, где должен быть UA. Если и там его прописать правильно, то запрос тоже не пройдет.
действительно, и хосты сами подхватываются правильные. Интересно, задумано ли так.
Спасибо
 
можно с хостом но вот так "Host: mail.ru" так на главную страницу кидает собака )
 
а не сложно будет запостить скрины фидлера:
- заголовки которые отдаёт зена
- заголовки которые отдаёт ваш метод C#
 
а не сложно будет запостить скрины фидлера:
- заголовки которые отдаёт зена
- заголовки которые отдаёт ваш метод C#
спасибо, проблема решена выше убиранием хоста из прописанных заголовков. Как оказалось, метод сам его подхватывает и отдает правильные хосты
 

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