Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / C++ [игнор отключен] [закрыт для гостей] / libcurl получает html-код yandex, но не может получить код vk / 9 сообщений из 9, страница 1 из 1
23.04.2016, 17:44
    #39223106
ukugyul552465
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
libcurl получает html-код yandex, но не может получить код vk
Код
Код: 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
23.04.2016, 17:53
    #39223108
ukugyul552465
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
libcurl получает html-код yandex, но не может получить код vk
Пробовал с помощью urlmon.lib, та жа история.
...
Рейтинг: 0 / 0
23.04.2016, 18:40
    #39223134
Usman
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
libcurl получает html-код yandex, но не может получить код vk
ukugyul552465,

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

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


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