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

Парсинг ответа после запроса

Ags1of

RAM
Пользователь
Регистрация
26.11.2021
Сообщения
122
Реакции
1
Делаю софтец, который должен получать некоторую инфу, введённую юзером. Вот, допустим, нужный сайт https://vin01.ru/ Я ввожу туда номер автомобиля или вин, дальше нажимается кнопка и выводятся данные, мне нужно, чтобы полученные данные выводились в консоль. Помогите, пожалуйста. Набросков кода нет, так как не шарю в этой теме. Также хочу с некоторыми телеграм ботами. Помогите, пожалуйста.
 
Пожалуйста, обратите внимание, что пользователь заблокирован
Набросков кода нет, так как не шарю в этой теме
Если вы не кодер, тогда идите в комерц. Или хотя бы опишите внятно, на каком языке нужна реализация, почему именно в консоль (и что дальше?).
 
Если вы не кодер, тогда идите в комерц. Или хотя бы опишите внятно, на каком языке нужна реализация, почему именно в консоль (и что дальше?).
Логично же, если бы я не кодил, не писал бы в этот раздел. Реализация нужна на C#, а вот смысла в вопросе, куда должен выводится текст и что с ним делать дальше, я не вижу, я попросил помощи в реализации кода, указав ссылку на сайт и описав, что нужно сделать. Как я сказал раньше, нужно ввести вин или гос.номер, далее, по щелчку кнопки, идёт вот такой GET запрос
  1. Request URL:

  2. Request Method:
    GET

    С переданными нами параметрами
    • gosNumber:
      Номер вы вписываете в строку ранее
    • key:
      03AGdBq24_f3Cnu9hGPBkQu396GEKA-XoEWfYukWyu7pL7XABMGp555S6u8q4847jUlzEC9-TT690P8mk79fZcgJScJkRcXnCS4rdmdgGLv5hhg6C5mDLYqZb8sseBSpG6XXvH84ALtghQQ6VPqgxE7gJufv9PLJrAaKHEaEnNmkbQjGyYzx0Y1LvNETGsVp0lF6MP6g8SbjEL9yOEiyEd7wZVqYZPCKYIW-t7KTQawYzXdkG74mHsswE0rxqZxHCGu5wxXCU3ebCL5tdQIzXLOLCVqOxKGP_RGyvgJ0LOU2Eb6iieyBC9cl799N_dQGS2RaWAVXHio_ZWRt-uij1PbXkcHIuIGx7XiqJNhD7_ybcTZ-K_FRuhQvAf6l2tRwDKjJ72tD6dYwDMesbwW2biiuvYc3zfgrm2MX9_gWhH1_DsdUTRt9Xuc1grSu29bDtU83wOoxvjlC6m
    • site:
      1
      А вот дальше, по выбору информации, которую нужно получить и нажатию кнопки, нам выводится информация, которую мне нужно спарсить и распечатать в консоль. Вот это я и просил. Написал, что не шарю, именно потому , не занимался сетевым программированием.
 
Пожалуйста, обратите внимание, что пользователь заблокирован
А зачем такое извращение? В чем проблема просто на запросах сделать и обход капчи?
Грубо говоря у тебя открывается консоль, вводишь номер, обходится капча и отправляется запрос. С запроса вытаскиваешь всё что нужно и выводишь куда надо
 
А зачем такое извращение? В чем проблема просто на запросах сделать и обход капчи?
Грубо говоря у тебя открывается консоль, вводишь номер, обходится капча и отправляется запрос. С запроса вытаскиваешь всё что нужно и выводишь куда надо
в тот то и дело, что я прошу помочь в реализации этого, так как не ас в этом деле
 
Пожалуйста, обратите внимание, что пользователь заблокирован
в тот то и дело, что я прошу помочь в реализации этого, так как не ас в этом деле
Это уже получается код за тебя полностью рабочего софта написать, тебе в коммерц нужно)
Насколько я знаю в разделе "C/C++ / C# / .NET / Java" люди выкладывают свой код и просят помочь, но не написать за них всё.
Тем более алгоритм уже подсказан.

Либо если вручную хотите вводить и не платить за капчу, то копайте в сторону selenium.
 
Это уже получается код за тебя полностью рабочего софта написать, тебе в коммерц нужно)
Насколько я знаю в разделе "C/C++ / C# / .NET / Java" люди выкладывают свой код и просят помочь, но не написать за них всё.
Тем более алгоритм уже подсказан.

Либо если вручную хотите вводить и не платить за капчу, то копайте в сторону selenium.
Так, посидел я тут, чуть разобрался. Вот пример кода. Тут, в функции CarNumber я достаю вин номер автомобиля, но выводится не именно он, а прям ответ на запрос: {"success":true,"code":200,"data":{"vin":"WDB2110651A466598"}}. Отсюда мне нужно спарсить этот вин, но не пойму как. там ниже есть переменная string, в которой лежит линк для запроса и путь Xpath к вину. Помогите спарсить. И, кстати, в функции VinSearcher какая-то ерунда происходит с линком, потому что он ничего путнего не выводит. Только показывает, что неизвестная ошибка. Я больше найти линка для поиска по вин номеру не могу. Тут тоже нужна ваша помощь
C#:
        public static async void CarNumber()
        {

            Console.WriteLine("Введите номер автомобиля большими русскими буквами: ");
            string CarsNumber = Console.ReadLine();
            WebRequest request = WebRequest.Create("https://vin01.ru/v2/getVin.php?gosNumber=" + $"{CarsNumber}" + "&key=03AGdBq26Cb_xEZfY1HxNbDa8PrMJzk5gKrnChDsuR2wRLoYHrEPHmcjIXdGNhdJlStnchJkYXr7bMlS8Hf01pVXdOmbbaTGgRF8nhaJmwHxJxybklF8RaNO1U7JzoQDI3Daeaxo6CGZi86a2zlBSFkbgwNlSorKpFd7ualGCW81QtjmYy3a73Lj8WFS2ljhDhRJCQ2lAFoJaFoeGF4Y9JQ792rNA5ElTnPJyYMb0L14t1Kx2ixHQcTvSWoDoxht3G0A0W6o9tQ59G-7quQE8Jj7z7cwnmax2nlvgnBu0HL5ldf9dT0n2OlnzgrnEkh9CmH9Dztt0LrF_AY36dLNLTeDebBvR5wZ8psIKtAv5SkXYmDbfe9wPXVW07H8Ga4b2Yd_y0cRc8gLafNe8zcqsa4EsG5eck-6vvJ4vNCfdrvnK-qhXRQ3mxE8w&site=1");
            WebResponse resp = await request.GetResponseAsync();
            using (Stream stream = resp.GetResponseStream())
            {
                using (StreamReader reader = new StreamReader(stream))
                {
                    Console.WriteLine(reader.ReadToEnd());
                }
            }
            Thread.Sleep(2000);

            Console.WriteLine("Хотите продолжить поиск по полученному VIN номеру? y - yes , n - no");
            string ccontinue = Console.ReadLine();
            string Link = "https://vin01.ru/v2/getVin.php?gosNumber=" + $"{CarsNumber}" + "&key=03AGdBq26Cb_xEZfY1HxNbDa8PrMJzk5gKrnChDsuR2wRLoYHrEPHmcjIXdGNhdJlStnchJkYXr7bMlS8Hf01pVXdOmbbaTGgRF8nhaJmwHxJxybklF8RaNO1U7JzoQDI3Daeaxo6CGZi86a2zlBSFkbgwNlSorKpFd7ualGCW81QtjmYy3a73Lj8WFS2ljhDhRJCQ2lAFoJaFoeGF4Y9JQ792rNA5ElTnPJyYMb0L14t1Kx2ixHQcTvSWoDoxht3G0A0W6o9tQ59G-7quQE8Jj7z7cwnmax2nlvgnBu0HL5ldf9dT0n2OlnzgrnEkh9CmH9Dztt0LrF_AY36dLNLTeDebBvR5wZ8psIKtAv5SkXYmDbfe9wPXVW07H8Ga4b2Yd_y0cRc8gLafNe8zcqsa4EsG5eck-6vvJ4vNCfdrvnK-qhXRQ3mxE8w&site=1";
            string Xpath = "/html/body";
            if (ccontinue == "y")
            {
                WebRequest req = WebRequest.Create("https://vin01.ru/v2/rsaApi.php?vin=WDB2110651A466598&key=03AGdBq25lc4CmBBA-nEK7RLRbbHpufOuI_EnA2G7TTb_7ROgLGq0CSFn7wYNkNi8bSTcLmW-LbF57LB80QYmbFYomACX52ApYwXjYfuiay4YH0XAvzo3oLdkNuSmaSvw5QY45Rlz1_LAnmCotgxVl-aKHE6hjjcs8cTeyjmPwXKIxTTPGsYtT38St3Z2EAB7CAh2YiVp6Z_rO-u57zYmp73FIDGx8jdEG100b5zVFuZOsIFmT57ACKn8Pqfpsvu1Wriw0EBi5R0RmZPamElt4Y6u5kXbiY967wbFpvoxdNXV5JMI0wboPXZH2hTOFq9Gb7tEr5sTPjlBeZobJdQTYZC40XO3UPZd7d_TFOnkdNR_xvgQXzLrarWtjXep5NCpycJfhVJcgTMp9lHsYCv9Oui3JiI19QuxaCSTECse-_Ldp_ptEWY0Nw4hm9J5yg3EWYeRAVcRJXiMV");

                WebResponse res = await request.GetResponseAsync();
                using (Stream stream = resp.GetResponseStream())
                {
                    using (StreamReader reader = new StreamReader(stream))
                    {
                        Console.WriteLine(reader.ReadToEnd());
                    }
                }
            }
            else if(ccontinue == "n")
            {
                VinSearcher();
            }
        }

        public static async void VinSearcher()
        { 
            Console.WriteLine("Ввидете нужный вам VIN");
            string VIN = Console.ReadLine();

            WebRequest req = WebRequest.Create("https://vin01.ru/v2/rsaApi.php?vin=" + $"{VIN}" + "&key=03AGdBq25lc4CmBBA-nEK7RLRbbHpufOuI_EnA2G7TTb_7ROgLGq0CSFn7wYNkNi8bSTcLmW-LbF57LB80QYmbFYomACX52ApYwXjYfuiay4YH0XAvzo3oLdkNuSmaSvw5QY45Rlz1_LAnmCotgxVl-aKHE6hjjcs8cTeyjmPwXKIxTTPGsYtT38St3Z2EAB7CAh2YiVp6Z_rO-u57zYmp73FIDGx8jdEG100b5zVFuZOsIFmT57ACKn8Pqfpsvu1Wriw0EBi5R0RmZPamElt4Y6u5kXbiY967wbFpvoxdNXV5JMI0wboPXZH2hTOFq9Gb7tEr5sTPjlBeZobJdQTYZC40XO3UPZd7d_TFOnkdNR_xvgQXzLrarWtjXep5NCpycJfhVJcgTMp9lHsYCv9Oui3JiI19QuxaCSTECse-_Ldp_ptEWY0Nw4hm9J5yg3EWYeRAVcRJXiMV");

            WebResponse res = await req.GetResponseAsync();
            using (Stream stream = res.GetResponseStream())
            {
                using (StreamReader reader = new StreamReader(stream))
                {
                    Console.WriteLine(reader.ReadToEnd());
                }
            }
        }
 
Последнее редактирование:
Так, посидел я тут, чуть разобрался. Вот пример кода. Тут, в функции CarNumber я достаю вин номер автомобиля, но выводится не именно он, а прям ответ на запрос: {"success":true,"code":200,"data":{"vin":"WDB2110651A466598"}}. Отсюда мне нужно спарсить этот вин, но не пойму как. там ниже есть переменная string, в которой лежит линк для запроса и путь Xpath к вину. Помогите спарсить. И, кстати, в функции VinSearcher какая-то ерунда происходит с линком, потому что он ничего путнего не выводит. Только показывает, что неизвестная ошибка. Я больше найти линка для поиска по вин номеру не могу. Тут тоже нужна ваша помощь
C#:
        public static async void CarNumber()
        {

            Console.WriteLine("Введите номер автомобиля большими русскими буквами: ");
            string CarsNumber = Console.ReadLine();
            WebRequest request = WebRequest.Create("https://vin01.ru/v2/getVin.php?gosNumber=" + $"{CarsNumber}" + "&key=03AGdBq26Cb_xEZfY1HxNbDa8PrMJzk5gKrnChDsuR2wRLoYHrEPHmcjIXdGNhdJlStnchJkYXr7bMlS8Hf01pVXdOmbbaTGgRF8nhaJmwHxJxybklF8RaNO1U7JzoQDI3Daeaxo6CGZi86a2zlBSFkbgwNlSorKpFd7ualGCW81QtjmYy3a73Lj8WFS2ljhDhRJCQ2lAFoJaFoeGF4Y9JQ792rNA5ElTnPJyYMb0L14t1Kx2ixHQcTvSWoDoxht3G0A0W6o9tQ59G-7quQE8Jj7z7cwnmax2nlvgnBu0HL5ldf9dT0n2OlnzgrnEkh9CmH9Dztt0LrF_AY36dLNLTeDebBvR5wZ8psIKtAv5SkXYmDbfe9wPXVW07H8Ga4b2Yd_y0cRc8gLafNe8zcqsa4EsG5eck-6vvJ4vNCfdrvnK-qhXRQ3mxE8w&site=1");
            WebResponse resp = await request.GetResponseAsync();
            using (Stream stream = resp.GetResponseStream())
            {
                using (StreamReader reader = new StreamReader(stream))
                {
                    Console.WriteLine(reader.ReadToEnd());
                }
            }
            Thread.Sleep(2000);

            Console.WriteLine("Хотите продолжить поиск по полученному VIN номеру? y - yes , n - no");
            string ccontinue = Console.ReadLine();
            string Link = "https://vin01.ru/v2/getVin.php?gosNumber=" + $"{CarsNumber}" + "&key=03AGdBq26Cb_xEZfY1HxNbDa8PrMJzk5gKrnChDsuR2wRLoYHrEPHmcjIXdGNhdJlStnchJkYXr7bMlS8Hf01pVXdOmbbaTGgRF8nhaJmwHxJxybklF8RaNO1U7JzoQDI3Daeaxo6CGZi86a2zlBSFkbgwNlSorKpFd7ualGCW81QtjmYy3a73Lj8WFS2ljhDhRJCQ2lAFoJaFoeGF4Y9JQ792rNA5ElTnPJyYMb0L14t1Kx2ixHQcTvSWoDoxht3G0A0W6o9tQ59G-7quQE8Jj7z7cwnmax2nlvgnBu0HL5ldf9dT0n2OlnzgrnEkh9CmH9Dztt0LrF_AY36dLNLTeDebBvR5wZ8psIKtAv5SkXYmDbfe9wPXVW07H8Ga4b2Yd_y0cRc8gLafNe8zcqsa4EsG5eck-6vvJ4vNCfdrvnK-qhXRQ3mxE8w&site=1";
            string Xpath = "/html/body";
            if (ccontinue == "y")
            {
                WebRequest req = WebRequest.Create("https://vin01.ru/v2/rsaApi.php?vin=WDB2110651A466598&key=03AGdBq25lc4CmBBA-nEK7RLRbbHpufOuI_EnA2G7TTb_7ROgLGq0CSFn7wYNkNi8bSTcLmW-LbF57LB80QYmbFYomACX52ApYwXjYfuiay4YH0XAvzo3oLdkNuSmaSvw5QY45Rlz1_LAnmCotgxVl-aKHE6hjjcs8cTeyjmPwXKIxTTPGsYtT38St3Z2EAB7CAh2YiVp6Z_rO-u57zYmp73FIDGx8jdEG100b5zVFuZOsIFmT57ACKn8Pqfpsvu1Wriw0EBi5R0RmZPamElt4Y6u5kXbiY967wbFpvoxdNXV5JMI0wboPXZH2hTOFq9Gb7tEr5sTPjlBeZobJdQTYZC40XO3UPZd7d_TFOnkdNR_xvgQXzLrarWtjXep5NCpycJfhVJcgTMp9lHsYCv9Oui3JiI19QuxaCSTECse-_Ldp_ptEWY0Nw4hm9J5yg3EWYeRAVcRJXiMV");

                WebResponse res = await request.GetResponseAsync();
                using (Stream stream = resp.GetResponseStream())
                {
                    using (StreamReader reader = new StreamReader(stream))
                    {
                        Console.WriteLine(reader.ReadToEnd());
                    }
                }
            }
            else if(ccontinue == "n")
            {
                VinSearcher();
            }
        }

        public static async void VinSearcher()
        {
            Console.WriteLine("Ввидете нужный вам VIN");
            string VIN = Console.ReadLine();

            WebRequest req = WebRequest.Create("https://vin01.ru/v2/rsaApi.php?vin=" + $"{VIN}" + "&key=03AGdBq25lc4CmBBA-nEK7RLRbbHpufOuI_EnA2G7TTb_7ROgLGq0CSFn7wYNkNi8bSTcLmW-LbF57LB80QYmbFYomACX52ApYwXjYfuiay4YH0XAvzo3oLdkNuSmaSvw5QY45Rlz1_LAnmCotgxVl-aKHE6hjjcs8cTeyjmPwXKIxTTPGsYtT38St3Z2EAB7CAh2YiVp6Z_rO-u57zYmp73FIDGx8jdEG100b5zVFuZOsIFmT57ACKn8Pqfpsvu1Wriw0EBi5R0RmZPamElt4Y6u5kXbiY967wbFpvoxdNXV5JMI0wboPXZH2hTOFq9Gb7tEr5sTPjlBeZobJdQTYZC40XO3UPZd7d_TFOnkdNR_xvgQXzLrarWtjXep5NCpycJfhVJcgTMp9lHsYCv9Oui3JiI19QuxaCSTECse-_Ldp_ptEWY0Nw4hm9J5yg3EWYeRAVcRJXiMV");

            WebResponse res = await req.GetResponseAsync();
            using (Stream stream = res.GetResponseStream())
            {
                using (StreamReader reader = new StreamReader(stream))
                {
                    Console.WriteLine(reader.ReadToEnd());
                }
            }
        }
вот нужные юзинги, если что
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.IO;
using System.Threading;
using System.Net;
using HtmlAgilityPack;
 
Пожалуйста, обратите внимание, что пользователь заблокирован
{"success":true,"code":200,"data":{"vin":"WDB2110651A466598"}}
Ну здесь вы либо парсите при помощи Json'a (библиотека newtonsoft json например)
Либо если впадлу это брать, то при помощи методов строк сделать)
C#:
// В функции CarNumber
string CarsNumber = Console.ReadLine();
WebRequest request = WebRequest.Create("https://vin01.ru/v2/getVin.php?gosNumber=" + $"{CarsNumber}" + "&key=03AGdBq26Cb_xEZfY1HxNbDa8PrMJzk5gKrnChDsuR2wRLoYHrEPHmcjIXdGNhdJlStnchJkYXr7bMlS8Hf01pVXdOmbbaTGgRF8nhaJmwHxJxybklF8RaNO1U7JzoQDI3Daeaxo6CGZi86a2zlBSFkbgwNlSorKpFd7ualGCW81QtjmYy3a73Lj8WFS2ljhDhRJCQ2lAFoJaFoeGF4Y9JQ792rNA5ElTnPJyYMb0L14t1Kx2ixHQcTvSWoDoxht3G0A0W6o9tQ59G-7quQE8Jj7z7cwnmax2nlvgnBu0HL5ldf9dT0n2OlnzgrnEkh9CmH9Dztt0LrF_AY36dLNLTeDebBvR5wZ8psIKtAv5SkXYmDbfe9wPXVW07H8Ga4b2Yd_y0cRc8gLafNe8zcqsa4EsG5eck-6vvJ4vNCfdrvnK-qhXRQ3mxE8w&site=1");
WebResponse resp = await request.GetResponseAsync();
using (Stream stream = resp.GetResponseStream()) {
    using (StreamReader reader = new StreamReader(stream)) {
        // изменения тут  
        string response_str = reader.ReadToEnd();
        // При удачном исходе response_str содержит {"success":true,"code":200,"data":{"vin":"WDB2110651A466598"}}
        // Неудачный не рассматриваю
        // vin\":\" == vin":" == 6 символов
        string vin = response_str.Substring(response_str.IndexOf("vin\":\"") + 6, 17); // Длина VIN, исходя из информации из гугла, всегда равна 17
       
        Console.WriteLine(vin);
    }
}
 
Пожалуйста, обратите внимание, что пользователь заблокирован
А ты не смотрел, что можно сделать с вином, чтобы по нему искать? Просто, как я писал раньше, какая-то ерунда с линком
Такую ошибку {"result":"error","code":"Неизвестная ошибка при обработке запроса"} вы получаете из-за того, что капча неверная.
Параметр key отвечает за ключ гугл капчи. Как я и сказал, вам нужны для сервисы для обхода капчи (rucaptcha, anticaptcha и тд), либо использовать автоматизированный браузер (selenium) и делать так, чтобы JS код гугл капчи у вас отработал, и вы получили ключ.
 
Такую ошибку {"result":"error","code":"Неизвестная ошибка при обработке запроса"} вы получаете из-за того, что капча неверная.
Параметр key отвечает за ключ гугл капчи. Как я и сказал, вам нужны для сервисы для обхода капчи (rucaptcha, anticaptcha и тд), либо использовать автоматизированный браузер (selenium) и делать так, чтобы JS код гугл капчи у вас отработал, и вы получили ключ.
Понял, благодарствую, а подскажете документацию по рукапче, если она есть. Или какие-нибудь вспомогательные видео?
 
Пожалуйста, обратите внимание, что пользователь заблокирован
Понял, благодарствую, а подскажете документацию по рукапче, если она есть. Или какие-нибудь вспомогательные видео?
https://rucaptcha.com/api-rucaptcha - документация
Также видел под шарп библиотеку для работу с рукапчей. Название точное не вспомню, но в менеджере пакетов Nuget можете по rucaptcha поиск сделать и найдете
 
https://rucaptcha.com/api-rucaptcha - документация
Также видел под шарп библиотеку для работу с рукапчей. Название точное не вспомню, но в менеджере пакетов Nuget можете по rucaptcha поиск сделать и найдете
извиняюсь за то, что так много спрашиваю, но не могли бы вы подсказать, какой там метод капчи, так как я только видел запрос на обновление капчи и тд. и, теоретически, если капча решается, то что делать дальше, какой запрос отправлять или что делать?
 
Пожалуйста, обратите внимание, что пользователь заблокирован
извиняюсь за то, что так много спрашиваю, но не могли бы вы подсказать, какой там метод капчи, так как я только видел запрос на обновление капчи и тд. и, теоретически, если капча решается, то что делать дальше, какой запрос отправлять или что делать?
Судя по всему это reCAPTCHA V3.
Код:
sitekey: 6LcqT3AUAAAAAENiQb4srVbEGmr_My_RK5bf-eJp
action: zalog
action: action_name
action: gibdd
action: byGos
action: byGosRsa2

dsadas.PNG

В этом же файле (mainscV5.js) есть и комментарии, что к чему относится
 
Судя по всему это reCAPTCHA V3.
Код:
sitekey: 6LcqT3AUAAAAAENiQb4srVbEGmr_My_RK5bf-eJp
action: zalog
action: action_name
action: gibdd
action: byGos
action: byGosRsa2

Посмотреть вложение 31097
В этом же файле (mainscV5.js) есть и комментарии, что к чему относится
Ну, вот допустим, капча решается, что делать дальше?
 
Пожалуйста, обратите внимание, что пользователь заблокирован
Ну, вот допустим, капча решается, что делать дальше?
Что что, ключ передаёте в запрос и также отправляете как и отправляли
 


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