Вход | Регистрация


1С:Предприятие :: 1С:Предприятие 8 общая

запрос за перевод google

запрос за перевод google
Я
   Шахтер_с
 
22.07.18 - 20:02
Чего ещё не хватает?
    Соединение = Новый HTTPСоединение("http://translate.google.ru/translate_a/t";);

    ПараметрыЗапроса = "?client=x&text="""+СокрЛП(ИсходныйТекст)+"""&sl=ru&tl=en";
    
    ОтветСервера = ПроцедурыОбменаССайтом.HTTPПолучитьДанныеССервера(Соединение,ПараметрыЗапроса);

Ответ приходит неопределено

Но если строку ввожу в браузер, то все ок

http://translate.google.ru/translate_a/t?client=x&text="Добрый день"&sl=ru&tl=en

Ответ приходит с переводом в файле
 
 
   Шахтер_с
 
1 - 22.07.18 - 20:03
И функция
Функция HTTPПолучитьДанныеССервера(Соединение, ПараметрыЗапроса="", Заголовки="", СтрокаСообщенияПользователю = "") Экспорт
    
    ОтветСервера   = Неопределено; 
    ИмяФайлаОтвета = ПолучитьИмяВременногоФайла();
        
    Попытка
        Соединение.Получить(СокрЛП(ПараметрыЗапроса), ИмяФайлаОтвета, СокрЛП(Заголовки));
    Исключение
        СтрокаСообщенияПользователю = "Не удалось получить данные с сервера.Проверьте правильность адреса сервера, порт, имя пользователя и пароль,"
            + Символы.ПС + "а также настройки подключения к Интернет.";
    КонецПопытки;    
    
    ФайлОтвета = Новый Файл(ИмяФайлаОтвета);
    
    Если ФайлОтвета.Существует() Тогда
        
        ТекстОтвета = Новый ТекстовыйДокумент();
        ТекстОтвета.Прочитать(ИмяФайлаОтвета);
        Если ТекстОтвета.КоличествоСтрок()>0 Тогда
            ОтветСервера = ТекстОтвета.ПолучитьТекст();    
        Иначе
            СтрокаСообщенияПользователю = "Получение данных с сервера: Получен пустой ответ сервера.";     
        КонецЕсли;    
        
    Иначе    
        СтрокаСообщенияПользователю = "Получение данных с сервера: Ответ сервера не получен."; 
    КонецЕсли;    
    
    Попытка
        УдалитьФайлы(КаталогВременныхФайлов(), ИмяФайлаОтвета);
    Исключение
    КонецПопытки;
    
    Возврат ОтветСервера;
    
КонецФункции
   Fram
 
2 - 22.07.18 - 20:41
Не знаю где ты такую инструкцию откопал. Вот читай как надо https://cloud.google.com/translate/docs/quickstart
   Шахтер_с
 
3 - 22.07.18 - 20:50
(2) Мне нужно не через API ,он платный. А именно HTTP запрос.
И строка с браузера работает. То есть мне в коде недостаточно информации. А чего, пока не знаю.
   Шахтер_с
 
4 - 22.07.18 - 21:30
Так получше уже

Соединение = Новый HTTPСоединение("translate.google.ru");
    ПараметрыЗапроса = "/translate_a/t?client=x&text="+СокрЛП(ИсходныйТекст)+"""&sl=ru&tl=en";
    
ИмяФайлаОтвета = ПолучитьИмяВременногоФайла();
        
    
Соединение.Получить(СокрЛП(ПараметрыЗапроса), ИмяФайлаОтвета);

Но все равно ошибка запроса 400
   Fram
 
5 - 22.07.18 - 22:08
translate_a/t перенеси в параметры запроса . То есть убери из соединения
   Fram
 
6 - 22.07.18 - 22:11
Не заметил (4). http вроде надо оставить.
Ещё ты забыл кавычки перед фразой которую переводишь. В отладчик загляни
   Шахтер_с
 
7 - 23.07.18 - 08:41
(6) при http вообще выдает ошибку.
    Соединение = Новый HTTPСоединение("http://translate.google.ru";);

    ПараметрыЗапроса = "/translate_a/t?client=x&text="""+СокрЛП(ИсходныйТекст)+"""&sl=ru&tl=en";
    
    ОтветСервера = HTTPПолучитьДанныеССервера(Соединение,ПараметрыЗапроса);

а так ошибка 400

    Соединение = Новый HTTPСоединение("translate.google.ru");
    ПараметрыЗапроса = "/translate_a/t?client=x&text="""+СокрЛП(ИсходныйТекст)+"""&sl=ru&tl=en";
    
    ОтветСервера = HTTPПолучитьДанныеССервера(Соединение,ПараметрыЗапроса);

ПараметрыЗапроса = "/translate_a/t?client=x&text="Добрый день"&sl=ru&tl=en"
   Шахтер_с
 
8 - 23.07.18 - 09:42
Ап. Кто-то такое делал?
   Garikk
 
9 - 23.07.18 - 09:56
* не делал
но еще предположение, по поводу того что "в браузере работает"
useragent какой?
   sitex
 
10 - 23.07.18 - 10:25
(0) Ну заголовки тоже надо формировать и отправлять . Гугл тоже использует защиту от ботов.
 
 Рекламное место пустует
   sitex
 
11 - 23.07.18 - 10:27
(0) Посмотри в Fiddler-е отправку через браузер, вкладку "Headers".
   Шахтер_с
 
12 - 23.07.18 - 10:55
(10) От и я думаю капча блокирует. Сейчас додам заголовки.
А с браузера все Ок
http://dropmefiles.com/RCK3W
   sitex
 
13 - 23.07.18 - 10:59
(12) ну если не получиться средствами 1С тогда  пробуй WinHttp.WinHttpRequest.5.1. Примеров в сети полно.
   Шахтер_с
 
14 - 23.07.18 - 12:06
(13) похоже html запросом с google переводчиком не получиться. Придеться через платное API.
Так как шлет такие ответы, а жаль...

The block will expire shortly after those requests stop.  
In the meantime, solving the above CAPTCHA will let you continue to use our services
This traffic may have been sent by malicious software, a browser plug-in,
or a script that sends automated requests.  If you share your network connection, ask your administrator for help
a different computer using the same IP
address may be responsible
Sometimes you may be asked to solve the CAPTCHA if you
are using advanced terms that robots are known to use, or sending requests very quickly.
   sitex
 
15 - 23.07.18 - 12:07
(14) cookie передаете в запросе ?
   Шахтер_с
 
16 - 23.07.18 - 12:41
Как я понимаю их сначала надо получить?
Потому я просто додал две строки с стандартным текстом
    
УРЛ="http://www.google.ru/translate_a/t?client=x&text=""Добрый день""&sl=ru&tl=en";

    ХТТПЗапрос = Новый COMОбъект("WinHttp.WinHttpRequest.5.1");
 
    ХТТПЗапрос.Open("GET", УРЛ, 0);
 
    ХТТПЗапрос.SetRequestHeader("Accept-Language", "en");
 
    ХТТПЗапрос.SetRequestHeader("Accept-Charset", "Windows-1251");
 
    ХТТПЗапрос.SetRequestHeader("Content-Language", "en");
 
    ХТТПЗапрос.SetRequestHeader("Content-Charset", "Windows-1251");
 
    ХТТПЗапрос.SetRequestHeader("Content-Encoding", "gzip, deflate");
 
    ХТТПЗапрос.SetRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=Windows-1251");
 
    ХТТПЗапрос.SetRequestHeader("CACHE_CONTROL", "no-cache");
 
    ХТТПЗапрос.SetRequestHeader("CONNECTION", "Keep-Alive");
 
    ХТТПЗапрос.SetRequestHeader("USER_AGENT", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; .NET CLR 1.1.4322)");
    
    ХТТПЗапрос.SetRequestHeader("Cookie", "$Version=1; Skin=new");
    
    ХТТПЗапрос.SetRequestHeader("Set-Cookie", "UserID=JohnDoe; Max-Age=3600; Version=1");
    
    ХТТПЗапрос.SetAutoLogonPolicy(0);
 
    ХТТПЗапрос.SetProxy(0);
 
    ХТТПЗапрос.Send();
    
    Сообщить(ХТТПЗапрос.ResponseText());
   sitex
 
17 - 23.07.18 - 13:33
(16) Как я понимаю их сначала надо получить?  --->>> Ну сделать первый переход просто на сайт http://www.google.ru, взять Cookie и потом уже применить их.
   sitex
 
18 - 23.07.18 - 13:39
(16) Получить 
     Cookie = WinHttp.GetResponseHeader("Set-Cookie");
   sitex
 
19 - 23.07.18 - 14:03
(16) Причем надо получать все WinHttp.GetAllResponseHeaders()
   Шахтер_с
 
20 - 23.07.18 - 17:22
Дал ему куки и все равно капчу подсовывает в ответ.
Давал сайте его заголовки, тогда send не отрабатывает
Текущий запрос


    WinHttp = Новый COMОбъект("WinHttp.WinHttpRequest.5.1");
    УРЛ="http://www.google.ru";;
    WinHttp.Open("GET", УРЛ, 0);
    WinHttp.SetRequestHeader("CONNECTION", "Keep-Alive");
    WinHttp.Send();
    
    Cookie = WinHttp.GetResponseHeader("Set-Cookie");
        
    УРЛ="http://www.google.ru/translate_a/t?client=x&text=""интернет""&sl=ru&tl=en";;

    ХТТПЗапрос = Новый COMОбъект("WinHttp.WinHttpRequest.5.1");
 
    ХТТПЗапрос.Open("GET", УРЛ, 0);
  
    ХТТПЗапрос.SetRequestHeader("Content-Type", "text/html; charset=windows-1251");
   
    ХТТПЗапрос.SetRequestHeader("Cookie", "$Version=1; Skin=new");
    
    ХТТПЗапрос.SetRequestHeader("Set-Cookie", Cookie);
    
    ХТТПЗапрос.SetAutoLogonPolicy(0);
 
    ХТТПЗапрос.SetProxy(0);
 
    ХТТПЗапрос.Send();
    
    Сообщить(ХТТПЗапрос.ResponseText());

И ответ начинается с капчи. Меняя слова с руки в браузере выводит без капчи сразу файл ответа правильный. С программы нет
<hr noshade size="1" style="color:#ccc; background-color:#ccc;"><br>
<form action="index" method="post">
<script src="https://www.google.com/recaptcha/api.js"; async defer></script>

<div id="recaptcha" class="g-recaptcha" data-sitekey="6LfwuyUTAAAAAOAmoS0fdqijC2PbbdH4kjq62Y1b"></div>
<input type='hidden' name='q' value='EgSwJKeBGL_G19oFIhkA8aeDS-rNUPi6s5sJ-8ZUBbt9A94tjFIfMgFy'><input type="hidden" name="continue" value="http://www.google.ru/translate_a/t?client=x&text=%22интернет%22&sl=ru&tl=en">;
<input type="submit" name="submit" value="Submit" style="font-size:18px; padding:4px 0;"><br><br><br>
</form>
<hr noshade size="1" style="color:#ccc; background-color:#ccc;">

<div style="font-size:13px;">
<b>About this page</b><br><br>Our systems have detected unusual traffic from your computer network.  This page checks to see if it&#39;s really you sending the requests, and not a robot.  <a href="#" onclick="document.getElementById('infoDiv').style.display='block';">Why did this happen?</a><br><br>
<div id="infoDiv" style="display:none; background-color:#eee; padding:10px; margin:0 0 15px 0; line-height:1.4em;">
This page appears when Google automatically detects requests coming from your computer network which appear to be in violation of the <a href="//http://www.google.com/policies/terms/">Terms of Service</a>. The block will expire shortly after those requests stop.  In the meantime, solving the above CAPTCHA will let you continue to use our services.<br><br>This traffic may have been sent by malicious software, a browser plug-in, or a script that sends automated requests.  If you share your network connection, ask your administrator for help &mdash; a different computer using the same IP address may be responsible.  <a href="//support.google.com/websearch/answer/86640">Learn more</a><br><br>Sometimes you may be asked to solve the CAPTCHA if you are using advanced terms that robots are known to use, or sending requests very quickly.
</div>
   sitex
 
21 - 24.07.18 - 08:02
(20) Скинь почту, я тебе пример скину.
   Шахтер_с
 
22 - 24.07.18 - 08:25
(21) alexfc@list.ru


Список тем форума
Рекламное место пустует  Рекламное место пустует
2 + 2 = 3.9999999999999999999999999999999...
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Рекламное место пустует