powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / libcurl получает html-код yandex, но не может получить код vk
9 сообщений из 9, страница 1 из 1
libcurl получает html-код yandex, но не может получить код vk
    #39223106
ukugyul552465
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код
Код: plaintext
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.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
#include <iostream>
#include <cstdlib>
#include <fstream>
#include <string>
#include "curl.h"
#pragma comment(lib,"curllib_static.lib") 
#pragma comment(lib,"libcurl_imp.lib")
#pragma warning(disable: 4996)
using namespace std;

const size_t BUF_SIZE= 5000000;
char   wr_buf[BUF_SIZE+1];  // char*   wr_buf[BUF_SIZE+1];
size_t  wr_index=0;

 //---------------------------------------------------------------------------

size_t write_data( char *ptr, size_t size, size_t nmemb, FILE* data)
{
    return fwrite(ptr, size, nmemb, data);
}

int main()
{
	// Открываем файлы для заголовка и тела
    std::string body_filename  = "body.html";
    FILE *body_file =  fopen(body_filename.c_str(),"w");
    if (body_file == NULL)  return -1;
 
    std::string url= "https://www.yandex.ru/";
 
    CURL *curl_handle = curl_easy_init();
    if(curl_handle)
        {
            // сохранение в файл html-страницу
            curl_easy_setopt(curl_handle, CURLOPT_WRITEDATA, body_file);
            curl_easy_setopt(curl_handle, CURLOPT_WRITEFUNCTION, write_data);
            // заголовки ответа выводим в консоль
            curl_easy_setopt(curl_handle, CURLOPT_WRITEHEADER, stdout);
 
               /* HTTPs  Запрос */
            curl_easy_setopt(curl_handle, CURLOPT_URL, url.c_str() );
 
             // не проверять SSL сертификат
            curl_easy_setopt(curl_handle, CURLOPT_SSL_VERIFYPEER, 0);
            // не проверять Host SSL сертификата
            curl_easy_setopt(curl_handle, CURLOPT_SSL_VERIFYHOST, 0);
 
            CURLcode res = curl_easy_perform(curl_handle);
            if(res != CURLE_OK)
                 std::cout<<"Error #"<<res<<" "<<curl_easy_strerror(res) <<std::endl;
 
             curl_easy_cleanup(curl_handle);
        }

	cin.get();
	cin.get();
	return 0;
}





Таким образом в файл body.html мы получаем код страницы yandex-а.
Однако, если вместо адреса яндекса вбить адрес вконтакте, ничего не выходит.

Быть может, ещё что-то надо передать curl-у в качестве параметра?
...
Рейтинг: 0 / 0
libcurl получает html-код yandex, но не может получить код vk
    #39223108
ukugyul552465
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Пробовал с помощью urlmon.lib, та жа история.
...
Рейтинг: 0 / 0
libcurl получает html-код yandex, но не может получить код vk
    #39223134
Фотография Usman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ukugyul552465,

Нужно указать User-Agent браузера
...
Рейтинг: 0 / 0
libcurl получает html-код yandex, но не может получить код vk
    #39223137
Фотография Usman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
libcurl получает html-код yandex, но не может получить код vk
    #39223151
ukugyul552465
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вставил такую строку:
curl_easy_setopt(curl_handle, CURLOPT_USERAGENT, "Mozilla/5.0 (compatible; vkShare; +vk.com/dev/Share)");
Выдаёт 302 Found и пустой файл.
Пробовал и другие user-agent-ы.
...
Рейтинг: 0 / 0
libcurl получает html-код yandex, но не может получить код vk
    #39223160
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ukugyul552465Пробовал и другие user-agent-ы.
Значит пора завязывать со стохастическим программированием и изучать спецификации HTTP
протокола.
https://en.wikipedia.org/wiki/HTTP_302
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
libcurl получает html-код yandex, но не может получить код vk
    #39223165
ukugyul552465
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо за ссылку, почитал, понял, в чём была ошибка, исправил, всё работает.
...
Рейтинг: 0 / 0
libcurl получает html-код yandex, но не может получить код vk
    #39223675
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ukugyul552465,

Vk требует аутентификации, как правило, у тетя ее нет кажется.
...
Рейтинг: 0 / 0
libcurl получает html-код yandex, но не может получить код vk
    #39223679
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ukugyul552465Спасибо за ссылку, почитал, понял, в чём была ошибка, исправил, всё работает.
Так в чем же она была, поделись, чтобы читающим этот тортик потом было полезно...
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / C++ [игнор отключен] [закрыт для гостей] / libcurl получает html-код yandex, но не может получить код vk
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]