Модераторы: feodorv
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> https запрос get возвращает 403 
:(
    Опции темы
kurlyak
Дата 22.1.2016, 12:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 217
Регистрация: 7.11.2007

Репутация: нет
Всего: 3



Есть код, водвращает Forbidden 403 (смотрел HTTP Debugger- ом). Что делать, я хочу написать такой коннект к переводчику Гугла, оболочку типа, что бы мне слова переводила. Копирую запрос точно так как в HTTP Debugger- е. Раньше работало, было http просто, а щас Гугл сделал https и все- работать перестало. Кто знает в чем проблема?

Код

CInternetSession session( _T( "ANDY" ), PRE_CONFIG_INTERNET_ACCESS );
CHttpConnection* pServer = NULL;
CHttpFile* pFile = NULL;

CString strServerName; // имя сервера
CString strObject; // имя объекта 
INTERNET_PORT nPort; // номер порта для связи
DWORD dwServiceType; // тип сервиса

CString szParseURL;
szParseURL.Format("https://translate.google.com/translate_a/single?client=t&sl=en&tl=ru&hl=ru&dt=bd&dt=ex&dt=ld&dt=md&dt=qca&dt=rw&dt=rm&dt=ss&dt=t&dt=at&ie=UTF-8&oe=UTF-8&otf=2&srcrom=1&ssel=0&tsel=0&kc=2&tco=2&tk=505069.105978&q=%s", szEng );

AfxParseURL(szParseURL, dwServiceType, strServerName, strObject, nPort );
pServer = session.GetHttpConnection( strServerName, INTERNET_DEFAULT_HTTPS_PORT, "", "");

CString strHeaders;
strHeaders.Format("Accept: */*\r\nAccept-Language: ru\r\nReferer: https://translate.google.com/#en/ru/%s\r\nAccept-Encoding: gzip, deflate\r\nUser-Agent: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0)\r\nHost: translate.google.com\r\nConnection: Keep-Alive\r\n\r\n", szEng );

pFile = pServer->OpenRequest(CHttpConnection::HTTP_VERB_GET,strObject,NULL,1,NULL,NULL,INTERNET_FLAG_SECURE);
    
BOOL result = pFile->SendRequest(strHeaders,NULL, 0);

DWORD dwRet; // переменная для хранения кода состояния 
pFile->QueryInfoStatusCode( dwRet ); // записываем код состояния в dwRet

//тут возвращает Forbidden 403
if(dwRet != 200)
{
    AfxMessageBox("Сервер Google не отвечает!");
    return;
}


Кто знает что делать, подскажите. Спасибо.

Это сообщение отредактировал(а) kurlyak - 24.1.2016, 20:38
PM MAIL   Вверх
volatile
Дата 22.1.2016, 19:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2107
Регистрация: 7.1.2011

Репутация: нет
Всего: 85



Цитата(kurlyak @  22.1.2016,  12:56 Найти цитируемый пост)
INTERNET_PORT nPort = 80; // номер порта для связи

как минимум у https другой порт.
PM MAIL   Вверх
kurlyak
Дата 24.1.2016, 20:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 217
Регистрация: 7.11.2007

Репутация: нет
Всего: 3



Я исправил, то в принципе значение которое стоит, оно роли не играет, так как функция AfxParseURL возвращает все равно порт https 443.

Я немного разобрался.

Беру строку запроса из HTTP Debugger:

Код

GET /translate_a/single?client=t&sl=en&tl=ru&hl=uk&dt=bd&dt=ex&dt=ld&dt=md&dt=qca&dt=rw&dt=rm&dt=ss&dt=t&dt=at&ie=UTF-8
&oe=UTF-8&otf=2&srcrom=0&ssel=0&tsel=0&kc=3&tco=2&tk=182993.320386&q=hello HTTP/1.1


Вот я ее отредактировал:

Код

https://translate.google.com/translate_a/single?client=t&sl=en&tl=ru&hl=ru&dt=bd&dt=ex&dt=ld&dt=md&dt=qca&dt=rw&dt=rm&dt=ss&dt=t&dt=at&ie=UTF-8
&oe=UTF-8&otf=2&srcrom=1&ssel=0&tsel=0&kc=3&q=hello


(переводиться слово hello оно в конце)

и вставляю ее в адресную строку браузера, и мне в ответ браузер пишет мое Forbidden 403 и то же пишет мне в ответ на мой запрос в программе (я на WinInet пишу) когда посылаю эту строку в GET запросе в моей программе. Именно эта строка указывается в HTTP Debugger что ее посылают в запросе. Но в это же время, когда эта строка посылается как пишет HTTP Debugger, то на самом деле в адресной строке браузера отображается эта строка:

Код

https://translate.google.com/#en/ru/hello


И эта строка упоминается в запросе который показывает HTTP Debugger в Referer секции запроса.

Что это за несоответствие? То есть одна строка посылается, а другая в строке браузера отображается? Запрос GET, оно должно быть то что в строке браузера то и посылается?

Объясните, кто в курсе.

Это сообщение отредактировал(а) kurlyak - 25.1.2016, 09:57
PM MAIL   Вверх
_zorn_
Дата 5.2.2016, 07:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1077
Регистрация: 21.8.2007

Репутация: нет
Всего: 12



Цитата(kurlyak @  25.1.2016,  03:40 Найти цитируемый пост)
Объясните, кто в курсе.

Про ajax вы судя по всему не слышали ?


PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Сети | Следующая тема »


 




[ Время генерации скрипта: 0.1491 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.