Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Работа с сетью в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 01.01.2010, 15:14   #1
theYozh
Пользователь
 
Аватар для theYozh
 
Регистрация: 28.01.2009
Сообщений: 75
Хорошо Корректный запрос (заголовки) к translate.google.ru

Уважаемые форумчане! Помогите решить следующую проблему:
Необходимо отправить запрос гугловскому переводчику и получить исходный код переведенной страницы.
Известно, что гугловцев нагнуть не так просто, поэтому они создали такую систему: переведенная страница появляется только через пару редиректов, гугл садит вам куки, и читает по мимо куков, посылаемые ему заголовки.
Что я делал:
  • Просниффил запросы, посылаемые браузером
  • Просниффил то, что посылает моя прога
  • Максимально замаскировался под браузер
  • Подключил куки
Теперь как это выглядит (куки уже встали):
Запрос, посылаемый оперой (в втором фрейме, приходящей в ответ страницы, редирект):
Цитата:
GET /translate?js=y&prev=_t&hl=ru&ie=UTF-8&layout=1&eotf=1&u=http%3A%2F%2Fww w.acoustic-energy.co.uk%2F&sl=en&tl=ru HTTP/1.1
User-Agent: Opera/9.64 (Windows NT 6.0; U; MRA 5.6 (build 03278); ru) Presto/2.1.1
Host: translate.google.ru
Accept: text/html, application/xml;q=0.9, application/xhtml+xml, image/png, image/jpeg, image/gif, image/x-xbitmap, */*;q=0.1
Accept-Language: ru-RU,ru;q=0.9,en;q=0.8
Accept-Charset: iso-8859-1, utf-8, utf-16, *;q=0.1
Accept-Encoding: deflate, gzip, x-gzip, identity, *;q=0
Referer: http://translate.google.ru/
Cookie: PREF=ID=2e89703008837ef0:NW=1:TM=12 62338534:LM=1262338534:S=VSicgpFHu--RHDHS
Cookie2: $Version=1
Connection: Keep-Alive, TE
TE: deflate, gzip, chunked, identity, trailers
Второй оперовский запрос (вызван редиректом во фрейме):
Цитата:
GET /translate_p?hl=ru&ie=UTF-8&sl=en&tl=ru&u=http://www.acoustic-energy.co.uk/&prev=_t&usg=ALkJrhisgJEKU-pdHTjCz_hh6nk0KKdA7w HTTP/1.1
User-Agent: Opera/9.64 (Windows NT 6.0; U; MRA 5.6 (build 03278); ru) Presto/2.1.1
Host: translate.google.ru
Accept: text/html, application/xml;q=0.9, application/xhtml+xml, image/png, image/jpeg, image/gif, image/x-xbitmap, */*;q=0.1
Accept-Language: ru-RU,ru;q=0.9,en;q=0.8
Accept-Charset: iso-8859-1, utf-8, utf-16, *;q=0.1
Accept-Encoding: deflate, gzip, x-gzip, identity, *;q=0
Referer: http://translate.google.ru/translate...2F&sl=en&tl=ru
Cookie: PREF=ID=2e89703008837ef0:NW=1:TM=12 62338534:LM=1262338534:S=VSicgpFHu--RHDHS
Cookie2: $Version=1
Connection: Keep-Alive, TE
TE: deflate, gzip, chunked, identity, trailers
Чего то особенного я в нем не увидел, возможно, в этом и проблема.

В ответ опере приходит http статус 200 (все ок) и код стараницы с двумя фреймами. Первый фрейм содержит панель гугла с опциями перевода, во второй грузится страница, которая содержит первый редирект, после первого редиректа грузится второй, а там уже переведенная страница.
На картинке:


Теперь, что у меня:
Посылаем первый запрос на загрузку страницы с фреймами - он проходит успешно, код подгружается.
Цитата:
GET /translate?js=y&prev=_t&hl=ru&ie=UTF-8&layout=1&eotf=1&u=http%3A%2F%2Fww w.acoustic-energy.co.uk%2F&sl=en&tl=ru HTTP/1.1
Content-Type: application/x-www-form-urlencoded
Host: translate.google.ru
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Charset: windows-1251,utf-8;q=0.7,*;q=0.7
Accept-Language: ru,en-us;q=0.7,en;q=0.3
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9.0.10) Gecko/2009042316 Firefox/3.0.10
Cookie: PREF=ID=a636f38a7a60f3cb:NW=1:TM=12 62342780:LM=1262342780:S=XSGs4eC_z4 VmrAPP
В том что подгрузилось получаем адрес фрейма с переведенной страницей (условный первый редирект) и пытаемся получить его содержимое, соответствующий запрос:
Цитата:
GET /translate_p?hl=ru&ie=UTF-8&sl=en&tl=ru&u=http://www.acoustic-energy.co.uk/&prev=_t&usg=ALkJrhisgJE KU-pdHTjCz_hh6nk0KKdA7w HTTP/1.1
Content-Type: application/x-www-form-urlencoded
Host: translate.google.ru
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Charset: windows-1251,utf-8;q=0.7,*;q=0.7
Accept-Language: ru,en-us;q=0.7,en;q=0.3
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9.0.10) Gecko/2009042316 Firefox/3.0.10
Cookie: PREF=ID=a636f38a7a60f3cb:NW=1:TM=12 62342780:LM=1262342780:S=XSGs4eC_z4 VmrAPP
И в ответ получаем: HTTP/1.1 400 Bad Request
На этом все прерывается, гугл не хочет отвечать проге, так как браузеру.
На картинке:


Помогите мне составить корректный запрос к гуглу. Или предложите свой вариант решения проблемы.

Очень надеюсь на вашу помощь и буду признателен и благодарен любому содействию (когда появятся WMZ или WMR поделюсь с теми, кто поможет добиться результата).
theYozh вне форума Ответить с цитированием
Старый 02.01.2010, 14:25   #2
theYozh
Пользователь
 
Аватар для theYozh
 
Регистрация: 28.01.2009
Сообщений: 75
По умолчанию

Профессионалы!!!! АУУУУУ!!
theYozh вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Корректный сёрчинг файлов и папок Altera Общие вопросы Delphi 7 20.02.2011 19:37
Парсинг translate.ru Sianukvil PHP 10 29.12.2009 22:44
как сделать запрос к translate.google... Crystal_Ra Работа с сетью в Delphi 1 19.07.2009 23:53
Корректный ли код? Hero Общие вопросы Delphi 9 07.03.2008 03:42
Корректный выход Constellation БД в Delphi 3 07.12.2007 15:47