• XSS.stack #1 – первый литературный журнал от юзеров форума

[C#]Как корректно отправить запрос?

Ags1of

RAM
Пользователь
Регистрация
26.11.2021
Сообщения
122
Реакции
1
Всем привет. Пытаюсь сделать что-то типо смс-бомбера. Подскажите, пожалуйста, как нужно корректно сформировать запрос с этого сайта (сайт), чтобы отправилось сообщение? Я пользовался утилитой Postman, в него перенёс все Request Headers, и в постмане всё работало, а потом, когда с потсмана скопировал C# код и вставил в VS, то программа отказывается работать. Возвращает пустой response и не отправляет сообщение. Вот сам C# код:
C#:
 try
            {
                var client = new RestClient("https://www.585zolotoy.ru/api/sms/send_code/");
                client.Timeout = -1;
                var request = new RestRequest(Method.POST);
                request.AddHeader("accept-language", "ru,en;q=0.9");
                request.AddHeader("content-length", "23");
                request.AddHeader("content-type", "application/json;charset=UTF-8");
                request.AddHeader("origin", "https://www.585zolotoy.ru");
                request.AddHeader("referer", "https://www.585zolotoy.ru/login/");
                request.AddHeader("sec-ch-ua", "\" Not A;Brand\";v=\"99\", \"Chromium\";v=\"102\", \"Yandex\";v=\"22\"");
                request.AddHeader("sec-ch-ua-mobile", "?0");
                request.AddHeader("sec-ch-ua-platform", "\"Windows\"");
                request.AddHeader("sec-fetch-dest", "empty");
                request.AddHeader("sec-fetch-mode", "cors");
                request.AddHeader("sec-fetch-site", "same-origin");
                request.AddHeader("x-qa-client-type", "WEB");
                request.AddHeader("x-qa-company", "3e6efe10-defd-4983-94a1-c5a4d3cb3689");
                request.AddHeader("x-qa-region", "a93acc32-8ed4-48ed-b105-abd0eb856021");
                var body = "{\"phone\":\"тут номер телефона"}"; //скобки в этой строке я экранировал сам. До этого было везде по две двойные кавычки
                request.AddParameter("application/json;charset=UTF-8", body, ParameterType.RequestBody);
                IRestResponse response = client.Execute(request);
                MessageBox.Show(response.Content);
            }
            catch(Exception ex)
            {
                MessageBox.Show("Не отправилось!" + ex);
            }
Также хочу сказать, что на новой версии либы RestSharp - код не работает вообще, не находит некоторые методы. Я установил restSharp версии 106.15.0
 
Всем привет. Пытаюсь сделать что-то типо смс-бомбера. Подскажите, пожалуйста, как нужно корректно сформировать запрос с этого сайта (сайт), чтобы отправилось сообщение? Я пользовался утилитой Postman, в него перенёс все Request Headers, и в постмане всё работало, а потом, когда с потсмана скопировал C# код и вставил в VS, то программа отказывается работать. Возвращает пустой response и не отправляет сообщение. Вот сам C# код:
C#:
 try
            {
                var client = new RestClient("https://www.585zolotoy.ru/api/sms/send_code/");
                client.Timeout = -1;
                var request = new RestRequest(Method.POST);
                request.AddHeader("accept-language", "ru,en;q=0.9");
                request.AddHeader("content-length", "23");
                request.AddHeader("content-type", "application/json;charset=UTF-8");
                request.AddHeader("origin", "https://www.585zolotoy.ru");
                request.AddHeader("referer", "https://www.585zolotoy.ru/login/");
                request.AddHeader("sec-ch-ua", "\" Not A;Brand\";v=\"99\", \"Chromium\";v=\"102\", \"Yandex\";v=\"22\"");
                request.AddHeader("sec-ch-ua-mobile", "?0");
                request.AddHeader("sec-ch-ua-platform", "\"Windows\"");
                request.AddHeader("sec-fetch-dest", "empty");
                request.AddHeader("sec-fetch-mode", "cors");
                request.AddHeader("sec-fetch-site", "same-origin");
                request.AddHeader("x-qa-client-type", "WEB");
                request.AddHeader("x-qa-company", "3e6efe10-defd-4983-94a1-c5a4d3cb3689");
                request.AddHeader("x-qa-region", "a93acc32-8ed4-48ed-b105-abd0eb856021");
                var body = "{\"phone\":\"тут номер телефона"}"; //скобки в этой строке я экранировал сам. До этого было везде по две двойные кавычки
                request.AddParameter("application/json;charset=UTF-8", body, ParameterType.RequestBody);
                IRestResponse response = client.Execute(request);
                MessageBox.Show(response.Content);
            }
            catch(Exception ex)
            {
                MessageBox.Show("Не отправилось!" + ex);
            }
Также хочу сказать, что на новой версии либы RestSharp - код не работает вообще, не находит некоторые методы. Я установил restSharp версии 106.15.0
1661720519262.png

Тогда уж и кавычку перед } экранируй
 
1661773422438.jpeg


Go to this website ++ https://curl.olsh.me/

Result


C#:
var handler = new HttpClientHandler();

// If you are using .NET Core 3.0+ you can replace `~DecompressionMethods.None` to `DecompressionMethods.All`
handler.AutomaticDecompression = ~DecompressionMethods.None;

// In production code, don't destroy the HttpClient through using, but better use IHttpClientFactory factory or at least reuse an existing HttpClient instance
// https://docs.microsoft.com/en-us/aspnet/core/fundamentals/http-requests
// https://www.aspnetmonsters.com/2016/08/2016-08-27-httpclientwrong/
using (var httpClient = new HttpClient(handler))
{
    using (var request = new HttpRequestMessage(new HttpMethod("GET"), "https://xss.pro/threads/72350/"))
    {
        request.Headers.TryAddWithoutValidation("Referer", "https://xss.pro/forums/88/");
        request.Headers.TryAddWithoutValidation("Upgrade-", "1");
        request.Headers.TryAddWithoutValidation("User-Agent", "
        request.Headers.TryAddWithoutValidation("sec-ch-ua", "\
        request.Headers.TryAddWithoutValidation("sec-ch-ua-mobile", "?0");
        request.Headers.TryAddWithoutValidation("sec-ch-ua-platform", "\"\"");

        var response = await httpClient.SendAsync(request);
    }
}
 
Посмотреть вложение 41972
Тогда уж и кавычку перед } экранируй
тут просто был номер телефона, я его удалил вместе со слэшем, а так, в исходном коде написан номер телефона и все кавычки экранированы.
 
тут просто был номер телефона, я его удалил вместе со слэшем, а так, в исходном коде написан номер телефона и все кавычки экранированы.
Какой статус код выдает в респонсе?
 
Посмотреть вложение 41987

Go to this website ++ https://curl.olsh.me/

Result


C#:
var handler = new HttpClientHandler();

// If you are using .NET Core 3.0+ you can replace `~DecompressionMethods.None` to `DecompressionMethods.All`
handler.AutomaticDecompression = ~DecompressionMethods.None;

// In production code, don't destroy the HttpClient through using, but better use IHttpClientFactory factory or at least reuse an existing HttpClient instance
// https://docs.microsoft.com/en-us/aspnet/core/fundamentals/http-requests
// https://www.aspnetmonsters.com/2016/08/2016-08-27-httpclientwrong/
using (var httpClient = new HttpClient(handler))
{
    using (var request = new HttpRequestMessage(new HttpMethod("GET"), "https://xss.pro/threads/72350/"))
    {
        request.Headers.TryAddWithoutValidation("Referer", "https://xss.pro/forums/88/");
        request.Headers.TryAddWithoutValidation("Upgrade-", "1");
        request.Headers.TryAddWithoutValidation("User-Agent", "
        request.Headers.TryAddWithoutValidation("sec-ch-ua", "\
        request.Headers.TryAddWithoutValidation("sec-ch-ua-mobile", "?0");
        request.Headers.TryAddWithoutValidation("sec-ch-ua-platform", "\"\"");

        var response = await httpClient.SendAsync(request);
    }
}
1661803278349.png
 
\"Windows\"
Мне очень не нравится экранизация здесь, но это явно не суть проблемы.
request.AddHeader("content-length", "23");
Content-Length хедер добавлять не нужно, как правило это всегда дописывают хттп клиенты сами. Но если хочешь, то размер устанавливай на размер твоего тела запроса (ну количество байтов, для строки это будет просто ее длина)

Также, прошу заметить, что у PostMan'a есть свой юзер-агент, PostManRuntime, который ставится по дефолту. При отправке с его дефолтным юзер-агентом действительно даже с частью твоих хедеров, выдается нормальный респонс.
1661815931062.png



Зато, если его убрать, оно респонс уже не возвращает (я его оверрайтнул на пустую строку):
1661816022760.png


Т.е смело могу предположить, что у тебя все проблемы из-за отсутствия User-Agent в хедерах.
Попробуй поставить и напишешь как результат
 
Мне очень не нравится экранизация здесь, но это явно не суть проблемы.

Content-Length хедер добавлять не нужно, как правило это всегда дописывают хттп клиенты сами. Но если хочешь, то размер устанавливай на размер твоего тела запроса (ну количество байтов, для строки это будет просто ее длина)

Также, прошу заметить, что у PostMan'a есть свой юзер-агент, PostManRuntime, который ставится по дефолту. При отправке с его дефолтным юзер-агентом действительно даже с частью твоих хедеров, выдается нормальный респонс.
Посмотреть вложение 42012


Зато, если его убрать, оно респонс уже не возвращает (я его оверрайтнул на пустую строку):
Посмотреть вложение 42013

Т.е смело могу предположить, что у тебя все проблемы из-за отсутствия User-Agent в хедерах.
Попробуй поставить и напишешь как результат
1661834195596.png
Выключил юзер-агент постмана.
Вставил свой с запроса в браузере и вылазит вот такая ошибка:
1661834249882.png
 
Посмотреть вложение 42022 Выключил юзер-агент постмана.
Вставил свой с запроса в браузере и вылазит вот такая ошибка:Посмотреть вложение 42023
Попробуй убрать Accept-Encoding, возможно респонс возвращает в бротли, что расшифровать не может.
Хотя сам попробовал, чет странное поведение на самом деле, щас подумаем.

Я уверен, что в панели можно отправить подобный запрос для отправки смс. Открой дебаггер > network inspector в файрфоксе и покажи заголовки запроса, когда отправляешь смс из панели, а не через апи.
 
Последнее редактирование:


Напишите ответ...
  • Вставить:
Прикрепить файлы
Верх