|
запрос за перевод google | ☑ | ||
---|---|---|---|---|
0
Шахтер_с
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 Тогда ОтветСервера = ТекстОтвета.ПолучитьТекст(); Иначе СтрокаСообщенияПользователю = "Получение данных с сервера: Получен пустой ответ сервера."; КонецЕсли; Иначе СтрокаСообщенияПользователю = "Получение данных с сервера: Ответ сервера не получен."; КонецЕсли; Попытка УдалитьФайлы(КаталогВременныхФайлов(), ИмяФайлаОтвета); Исключение КонецПопытки; Возврат ОтветСервера; КонецФункции |
|||
2
Fram
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 |
|||
5
Fram
22.07.18
✎
22:08
|
translate_a/t перенеси в параметры запроса . То есть убери из соединения
|
|||
6
Fram
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
|
Ап. Кто-то такое делал?
|
|||
9
Garikk
23.07.18
✎
09:56
|
* не делал
но еще предположение, по поводу того что "в браузере работает" useragent какой? |
|||
10
sitex
naïve
23.07.18
✎
10:25
|
(0) Ну заголовки тоже надо формировать и отправлять . Гугл тоже использует защиту от ботов.
|
|||
11
sitex
naïve
23.07.18
✎
10:27
|
(0) Посмотри в Fiddler-е отправку через браузер, вкладку "Headers".
|
|||
12
Шахтер_с
23.07.18
✎
10:55
|
(10) От и я думаю капча блокирует. Сейчас додам заголовки.
А с браузера все Ок http://dropmefiles.com/RCK3W |
|||
13
sitex
naïve
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. |
|||
15
sitex
naïve
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()); |
|||
17
sitex
naïve
23.07.18
✎
13:33
|
(16) Как я понимаю их сначала надо получить? --->>> Ну сделать первый переход просто на сайт http://www.google.ru, взять Cookie и потом уже применить их.
|
|||
18
sitex
naïve
23.07.18
✎
13:39
|
(16) Получить
Cookie = WinHttp.GetResponseHeader("Set-Cookie"); |
|||
19
sitex
naïve
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'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 — 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> |
|||
21
sitex
naïve
24.07.18
✎
08:02
|
(20) Скинь почту, я тебе пример скину.
|
|||
22
Шахтер_с
24.07.18
✎
08:25
|
(21) [email protected]
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |