Незнайка
26 / 11 / 2
Регистрация: 14.10.2016
Сообщений: 373
Записей в блоге: 2

Хочу скачать страницу, на которую перебрасывает, получаю набор иероглифов (WinInet)

09.09.2017, 21:33. Показов 1091. Ответов 1
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравия всем!

Пытаюсь загрузить страницу сайта, как показано в этой статье.

Во время подачи пост запроса сайту, он перебрасывает меня между страницами и в итоге отправляет мне нужную мне страницу. Это в сниффере:

==========================> МОЙ ЗАПРОС, АВТОРИЗАЦИЯ

POST /?-1.IFormSubmitListener-loginForm-loginForm HTTP/1.1
Host: site.ru
Connection: keep-alive
Content-Length: 42
Cache-Control: max-age=0
Origin: http://site.ru
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 5.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/57.0.2987.137 YaBrowser/17.4.1.919 Yowser/2.5 Safari/537.36
Content-Type: application/x-www-form-urlencoded
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
DNT: 1
Referer: http://site.ru/
Accept-Encoding: gzip, deflate
Accept-Language: ru,en;q=0.8

id1_hf_0=&login=username&password=passwo rd

==========================> ОТВЕТ СЕРВЕРА, ПЕРЕДАЧА ПЕЧЕНЕК

HTTP/1.1 302
Server: nginx/1.6.2
Date: Sat, 09 Sep 2017 16:06:49 GMT
Content-Length: 0
Connection: keep-alive
Cache-Control: no-cache, max-age=0, must-revalidate
Set-Cookie: JSESSIONID=SESSIONID123;path=/;HttpOnly
Set-Cookie: login=764824236DIGITS0239482038;Max-Age=2147483647;path=/
Pragma: no-cache
Location: http://site.ru/;jsessionid=SESSIONID123

==========================> МОЙ ЗАПРОС (ОТПРАВЛЕН АВТОМАТИЧЕСКИ)

GET /;jsessionid=SESSIONID123 HTTP/1.1
Host: site.ru
Connection: keep-alive
Cache-Control: max-age=0
Origin: http://site.ru
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 5.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/57.0.2987.137 YaBrowser/17.4.1.919 Yowser/2.5 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
DNT: 1
Referer: http://site.ru/
Accept-Encoding: gzip, deflate
Accept-Language: ru,en;q=0.8
Cookie: JSESSIONID=SESSIONID123; login=764824236DIGITS0239482038

========================== ОТВЕТ СЕРВЕРА (ХЗЧТО)

HTTP/1.1 302
Server: nginx/1.6.2
Date: Sat, 09 Sep 2017 16:06:50 GMT
Content-Length: 0
Connection: keep-alive
Cache-Control: no-cache, max-age=0, must-revalidate
Pragma: no-cache
Location: http://site.ru/my_list

==========================> СЛЕДУЮЩИЙ ЗАПРОС, УЖЕ НА ПОЛУЧЕНИЕ НУЖНОЙ СТРАНИЦЫ САЙТА, ТОЖЕ ОТПРАВЛЯЕТСЯ АВТОМАТОМ (Я ЭТОГО ВСЕГО ВООБЩЕ НЕ ДЕЛАЛ, Я ОТПРАВИЛ ТОЛЬКО АДЫН - ПЕРВЫЙ ЗАПРОС)

GET /my_list HTTP/1.1
Host: site.ru
Connection: keep-alive
Cache-Control: max-age=0
Origin: http://site.ru
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 5.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/57.0.2987.137 YaBrowser/17.4.1.919 Yowser/2.5 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
DNT: 1
Referer: http://site.ru/
Accept-Encoding: gzip, deflate
Accept-Language: ru,en;q=0.8
Cookie: JSESSIONID=SESSIONID123; login=764824236DIGITS0239482038

==========================> ОТВЕТ СЕРВЕРА УЖЕ С НУЖНОЙ МНЕ СТРАНИЦЕЙ

HTTP/1.1 200
Server: nginx/1.6.2
Date: Sat, 09 Sep 2017 16:06:50 GMT
Content-Type: text/html;charset=UTF-8
Transfer-Encoding: chunked
Connection: keep-alive
Cache-Control: no-cache, max-age=0, must-revalidate
Set-Cookie: gid=20425166;Max-Age=2147483647;path=/
Set-Cookie: gid=20425166;Max-Age=2147483647;path=/
Pragma: no-cache
Content-Encoding: gzip

894

==========================> *ДАЛЕЕ КОД НУЖНОЙ МНЕ СТРАНИЦЫ*
Как Вы видите, итого - три запроса, и только один ответ, содержащий данные (нужную мне страницу). А как её достать?

Этот код скачивает не пойми что:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
// посылаем запрос
BOOL bSend = ::HttpSendRequest(hRequest, logInHeaders,wcslen(logInHeaders), "id1_hf_0=&login=username&password=password",42);
if (bSend) {
    // создаём выходной файл
    ofstream fnews("news.html",ios::out|ios::binary);
    if (fnews.is_open()) for (;;) {
        // читаем данные
        char  szData[1024];
        DWORD dwBytesRead;
        BOOL bRead = 
                ::InternetReadFile(
                    hRequest,
                    szData,sizeof(szData)-1,
                    &dwBytesRead);
        
        // выход из цикла при ошибке или завершении
        if (bRead == FALSE  ||  dwBytesRead == 0)
            break;
        
        // сохраняем результат
        szData[dwBytesRead] = 0;
        MessageBoxA(hWnd, szData, szData, 0);
        fnews << szData;
        
        ok = true;
    }
}
Наверное, как раз из-за большого количества переадресаций.

Можно ли как-то решить эту проблему?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
09.09.2017, 21:33
Ответы с готовыми решениями:

Набор китайских иероглифов в Skype
Здравствуйте! Подскажите кто нибудь у меня установлен linux mint и мне нужна такая возможность набирать китайские иероглифы в skype, ...

RequestDispatcher не перебрасывает на выбранную страницу
Здравствуйте. Помогите, пожалуйста, решить проблему. Мне нужно чтобы сервлет переправил пользователя на указанную страницу. Для этого...

Wininet скачать изображение
Читал про wininet, все устраивает, нет лишних заморочек с сокетами и т.п. Парсить страницы и сохранить в файл (например html) - выходит, а...

1
 Аватар для Ign0Rb
3 / 3 / 3
Регистрация: 04.07.2016
Сообщений: 64
17.09.2017, 20:21
Тоже брал код в этой статье) Работал с апи всякими по http, ностальгируя по php, решил сделать удобную функцию

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
string urlGetContents(string server, string target, INTERNET_PORT port)
{   
    HINTERNET hInternet = InternetOpen(TEXT(""), INTERNET_OPEN_TYPE_PRECONFIG, NULL, NULL, 0);
    if (hInternet != NULL) {
        HINTERNET hConnect = InternetConnect( hInternet, TEXT(server.c_str()), port, NULL, NULL, INTERNET_SERVICE_HTTP, 0, 1u);
        if (hConnect != NULL) {
            HINTERNET hRequest = HttpOpenRequest( hConnect, TEXT("POST"), TEXT(target.c_str()), NULL, NULL, 0, INTERNET_FLAG_NO_CACHE_WRITE, 1);
            if (hRequest != NULL) {
                BOOL bSend = HttpSendRequest(hRequest, NULL, 0, NULL, 0);
                string data;
                if (bSend) {
                    while(true) {
                        char szData[1024];
                        DWORD dwBytesRead;
                        BOOL bRead = InternetReadFile(hRequest, szData, sizeof(szData)-1, &dwBytesRead);
 
                        if (bRead == FALSE  ||  dwBytesRead == 0) break;
 
                        szData[dwBytesRead] = 0;
                        data += szData;
                    }
                    return data;
                }
                InternetCloseHandle(hRequest);
            }
            InternetCloseHandle(hConnect);
        }
        InternetCloseHandle(hInternet);
    }
}
Мне нравится, удобно, возвращает, что нужно. У меня кодировку не ломает.

Добавлено через 1 минуту
А как вы выводите результат? В консоль?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
17.09.2017, 20:21
Помогаю со студенческими работами здесь

При регистрации перебрасывает на промежуточную страницу
Ситуация такая:Надо убрать промежуточную страницу при регистрации.Когда прохожу регистрацию на сайте то при успехе перебрасывает на...

Перебрасывает на страницу поиска Youtube 404 Not Found
С любой страницы перенаправляет на страницу поиска Youtube 404 Not Found, выдавая сообщение: &quot;К сожалению, страница недоступна....

Почему перебрасывает с Яндекс.Видео на другую страницу и отображается черный экран?
Здравствуйте. 2-ой день не могу посмотреть фильм на Яндекс.Видео. Как только захожу на эту страницу через пару секунд начинает загружаться...

WinInet - Сохранить на диске главную страницу яндекса
Нужно сохранить на диске главную страницу яндекса. Я делаю так: #include &lt;Windows.h&gt; #include &lt;WinInet.h&gt; #pragma comment(lib,...

Empty(var) получаю не то что хочу
Всем привет, есть у меня массив $termTypes; // я его в цикле прокручиваю и получаю либо пустой array или array ( 0 =&gt; 2 ) ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

Новые блоги и статьи
Инференс ML моделей в Java: TensorFlow, DL4J и DJL
Javaican 05.11.2025
Python захватил мир машинного обучения - это факт. Но когда дело доходит до продакшена, ситуация не так однозначна. Помню проект в крупном банке три года назад: команда data science натренировала. . .
Mapped types (отображённые типы) в TypeScript
Reangularity 03.11.2025
Mapped types работают как конвейер - берут существующую структуру и производят новую по заданным правилам. Меняют модификаторы свойств, трансформируют значения, фильтруют ключи. Один раз описал. . .
Адаптивная случайность в Unity: динамические вероятности для улучшения игрового дизайна
GameUnited 02.11.2025
Мой знакомый геймдизайнер потерял двадцать процентов активной аудитории за неделю. А виновником оказался обычный генератор псевдослучайных чисел. Казалось бы - добавил в карточную игру случайное. . .
Протоколы в Python
py-thonny 31.10.2025
Традиционная утиная типизация работает просто: попробовал вызвать метод, получилось - отлично, не получилось - упал с ошибкой в рантайме. Протоколы добавляют сюда проверку на этапе статического. . .
C++26: Read-copy-update (RCU)
bytestream 30.10.2025
Прошло почти двадцать лет с тех пор, как производители процессоров отказались от гонки мегагерц и перешли на многоядерность. И знаете что? Мы до сих пор спотыкаемся о те же грабли. Каждый раз, когда. . .
Изображения webp на старых x32 ОС Windows XP и Windows 7
Argus19 30.10.2025
Изображения webp на старых x32 ОС Windows XP и Windows 7 Чтобы решить задачу, использовал интернет: поисковики Google и Yandex, а также подсказки Deep Seek. Как оказалось, чтобы создать. . .
Passkey в ASP.NET Core identity
stackOverflow 29.10.2025
Пароли мертвы. Нет, серьезно - я повторяю это уже лет пять, но теперь впервые за это время чувствую, что это не просто красивые слова. В . NET 10 команда Microsoft внедрила поддержку Passkey прямо в. . .
Последние результаты исследования от команды MCM (октябрь 2025 г.)
Programma_Boinc 29.10.2025
Последние результаты исследования от команды MCM (октябрь 2025 г. ) Поскольку мы продолжаем изучать гены, которые играют ведущую роль в развитии рака, в рамках проекта "Картирование раковых. . .
Мысли в слух
kumehtar 29.10.2025
Обнаружил, что мысли лучше писать короткими фразами. Таким образом внимание читателя успевает охватить всю фразу сразу, за один раз, не соскакивая и не прерываясь. А если писать это длинным текстом,. . .
Побитовые операторы в Python
AI_Generated 28.10.2025
Побитовые операторы - это не реликт эпохи, когда каждый байт был на вес золота. Да, сейчас оперативка стоит копейки, но задачи изменились. Вместо экономии памяти приходится решать другие проблемы:. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru