Forum Webscript.Ru

Программирование => Perl => Тема начата: Maxim. от 05 Сентября 2001, 18:55:03

Название: Как обработать \'мою\' форму на \'чужом\' сервере ?
Отправлено: Maxim. от 05 Сентября 2001, 18:55:03
Имеем: С чужого сервера загружается HTML страница с формой. После заполнения полей формы она передается на обработку программе на том-же сервере (расширение: asp). Требуется перенести страницу с формой на другой (мой) сервер, а программа обработки формы остается на прежнем (чужом) сервере. При попытке отправить форму (загруженную с моего сервера) на обработку на чужой сервер - выдается сообщение, что так нельзя. В чем может быть причина и как ее обойти ??
С уважением.
Название: Как обработать \'мою\' форму на \'чужом\' сервере ?
Отправлено: AliMamed от 05 Сентября 2001, 19:30:58
в чем проблема:
проверяется рефферер.
как обойти:
вставить в хттп запрос нужный рефферер
Название: Как обработать \'мою\' форму на \'чужом\' сервере ?
Отправлено: Maxim. от 06 Сентября 2001, 10:00:30
Насколько я понял ответ AliMamed - под \\"реферер\\" Вы наверное имеете в виду некое
значение (value) для невидимого (hidden) поля
формы. Действительно такое поле есть и в нем
я получаю (а затем и передаю на обработку)  при запросе формы с \\\'чужого\\\' сервера мой IP адрес. Это все я воспроизвел и для случая запроса формы с моего сервера. Однако этого
не достаточно. Как то \\"чужой\\" сервер распознает - что форма получена с другого сервера. Куки я на браузере заблокировал.
С уважением.
Название: Как обработать \'мою\' форму на \'чужом\' сервере ?
Отправлено: Chs от 06 Сентября 2001, 10:24:36
Цитировать
Насколько я понял ответ AliMamed - под \\"реферер\\" Вы наверное имеете в виду некое
значение (value) для невидимого (hidden) поля
формы.

Вы поняли неправильно.
rfc2616
Название: Как обработать \'мою\' форму на \'чужом\' сервере ?
Отправлено: Maxim. от 06 Сентября 2001, 11:16:53
Теперь понял - Вы имеете ввиду одну из переменных среды: HTTP_REFERER. Насколько я понял, этот параметр браузер фиксирует автоматически после загрузки HTML страницы с
сервера (в моем случае страницы с формой), а
затем передает среди переменных среды на следующий сервер, куда он отправляет форму на обработку. Так каким образом я могу на стороне клиента динамически подменить адрес моего сервера на адрес \\"чужого\\" ? С помощью
JavaScript ?
С уважением.
Название: Как обработать \'мою\' форму на \'чужом\' сервере ?
Отправлено: Chs от 06 Сентября 2001, 13:11:20
Цитировать
Теперь понял - Вы имеете ввиду одну из переменных среды: HTTP_REFERER. Насколько я понял, этот параметр браузер фиксирует автоматически после загрузки HTML страницы с
сервера (в моем случае страницы с формой), а
затем передает среди переменных среды на следующий сервер, куда он отправляет форму на обработку. Так каким образом я могу на стороне клиента динамически подменить адрес моего сервера на адрес \\"чужого\\" ? С помощью
JavaScript ?
С уважением.

На стороне клиента - не получиться, а сделать свой обработчик формы с последующей отправкой ее данных на другой сервер с подменой referer - реально.
perldoc LWP::UserAgent
perldoc lwpcook
Название: Как обработать \'мою\' форму на \'чужом\' сервере ?
Отправлено: Maxim. от 06 Сентября 2001, 17:15:38
Спасибо за совет. Может быть подскажете ресурс в сети, близкий к предлагаемому решению ?
С уважением.
Название: Как обработать \'мою\' форму на \'чужом\' сервере ?
Отправлено: Maxim. от 12 Сентября 2001, 12:57:51
C REFERER похоже разобрался и из моего CGI скрипта передаю
необходимое значение на \'чужой\' сервер. Однако этого оказалось не достаточно. Необходимо еще передать из моего
CGI скрипта на \'чужой\' сервер IP адреc клиента. который передал заполненную форму этому моему CGI скрипту. Попробовал  cделать это  через HTTP::Request (по аналогии с
REFERER) - не получилось.  Может кто посоветует решение ?
Название: Как обработать \'мою\' форму на \'чужом\' сервере ?
Отправлено: lodevar от 12 Сентября 2001, 13:09:50
Извините за любопытство, а зачем это надо? :confused:
Название: Как обработать \'мою\' форму на \'чужом\' сервере ?
Отправлено: Maxim. от 12 Сентября 2001, 13:16:20
В ответ на предыдущий вопрос: стандартная форма с \'чужого\'
сервера осуществляет слабый контроль за корректностью
заполнения полей этой формы. Поэтому слишком часто попадаются неверно заполненные поля (например адрес e-mail).  Я хочу в своем варианте той-же формы сделать этот
контроль лучше.
Название: Как обработать \'мою\' форму на \'чужом\' сервере ?
Отправлено: Chs от 12 Сентября 2001, 13:46:24
Цитировать
Originally posted by Maxim.
Необходимо еще передать из моего
CGI скрипта на \'чужой\' сервер IP адреc клиента. который передал заполненную форму этому моему CGI скрипту. Попробовал  cделать это  через HTTP::Request (по аналогии с
REFERER) - не получилось.  Может кто посоветует решение ?

И не получиться.
Это невозможно.:)
Название: Как обработать \'мою\' форму на \'чужом\' сервере ?
Отправлено: Maxim. от 13 Сентября 2001, 13:24:22
Да, с изменением IP адреса (в программе) действительно сложно. Но может быть лучше  решить вопрос иначе - я пробовал менять REFERER в CGI-Perl скрипте и из него-же
передавал запрос на \'чужой\' сервер для обработки формы.
Проблема REFERER решалась, но возникала проблема IP адреса. Тогда возможно следует передавать форму на обработку \'чужому\'  серверу прямо из браузера (с клиентской
машины), но перед отправкой CGI скриптом поменять REFERER ??  Но как это сделать ??
Название: Как обработать \'мою\' форму на \'чужом\' сервере ?
Отправлено: Chs от 13 Сентября 2001, 14:09:46
Цитировать
Originally posted by Maxim.
Да, с изменением IP адреса (в программе) действительно сложно. Но может быть лучше  решить вопрос иначе - я пробовал менять REFERER в CGI-Perl скрипте и из него-же
передавал запрос на \'чужой\' сервер для обработки формы.
Проблема REFERER решалась, но возникала проблема IP адреса. Тогда возможно следует передавать форму на обработку \'чужому\'  серверу прямо из браузера (с клиентской
машины), но перед отправкой CGI скриптом поменять REFERER ??  Но как это сделать ??

Давай так: мухи отдельно, котлеты отдельно.:)
CGI-скрипты работют на стороне сервера и никакого понятия о броузере не имеют.
Если уж тебе нужна какая-то подстановка, проверка значений - используй javascript.
Название: Как обработать \'мою\' форму на \'чужом\' сервере ?
Отправлено: Maxim. от 14 Сентября 2001, 11:30:48
Конечно отдельно. А если по существу то: то, что я нашел по вопросу подмены HTTP_REFERER, так это подмена на нужное
значение в CGI скрипте и после этого отправка запроса (формы) на \'чужой\' сервер прямо из этого CGI скрипта. Т.е. имитация браузера средствами CGI. В моем случае это не подходит, т.к. возникает проблема с IP адресом - на \'чужой\' сервер в этом случае передается IP моего сервера, а не IP клиента. Может быть возможно из CGI скрипта отправить
страницу с формой (еще пока пустой) браузеру клиента и уже
в этот момент подсунуть ему необходимое значение HTTP_REFERER ?!
Название: Как обработать \'мою\' форму на \'чужом\' сервере ?
Отправлено: Chs от 14 Сентября 2001, 11:48:42
Цитировать
Сообщение от Maxim.
Может быть возможно из CGI скрипта отправить
страницу с формой (еще пока пустой) браузеру клиента и уже
в этот момент подсунуть ему необходимое значение HTTP_REFERER ?!

HTTP запрос серверу с данными формы будет формировать в этом случае броузер. И ререфер он сформирует соответствующим образом.:))
Название: Как обработать \'мою\' форму на \'чужом\' сервере ?
Отправлено: BigHarry от 14 Сентября 2001, 16:45:27
Цитировать
Сообщение от Maxim.
В моем случае это не подходит, т.к. возникает проблема с IP адресом - на \'чужой\' сервер в этом случае передается IP моего сервера, а не IP клиента.


А в чем проблема-то ? Ну и пусть твой IP передается - или на той стороне, куда таким макаром постится форма, запрещено обрабатывать запросы с IP от твоего сервера ?
Название: Не пойму ...
Отправлено: Realtor from Moscow от 14 Сентября 2001, 22:52:31
Чего-то я читал, читал. Но так и не понял, на кой это все нужно?

И если у тебя забанен IP, то проще поменять бесплатного хостера ;)
Название: Как обработать \'мою\' форму на \'чужом\' сервере ?
Отправлено: Maxim. от 18 Сентября 2001, 12:01:04
В продолжении этой темы: в "моем" CGI скрипте я формирую
запрос к  "чужому" серверу, в котором передаю параметры из
формы и устанавливаю нужный HTTP_REFERER (т.е. изображаю для него браузер). Как в этом случае передать этому "чужому" серверу информацию о машине клиента (с которой собственно и был вызван "мой" CGI скрипт), чтобы ответная страница с этого "чужого" сервера попала на машину (браузер) клиента??
Название: Как обработать \'мою\' форму на \'чужом\' сервере ?
Отправлено: Chs от 18 Сентября 2001, 12:28:30
Цитировать
Сообщение от Maxim.
В продолжении этой темы: в "моем" CGI скрипте я формирую
запрос к  "чужому" серверу, в котором передаю параметры из
формы и устанавливаю нужный HTTP_REFERER (т.е. изображаю для него браузер). Как в этом случае передать этому "чужому" серверу информацию о машине клиента (с которой собственно и был вызван "мой" CGI скрипт), чтобы ответная страница с этого "чужого" сервера попала на машину (браузер) клиента??

Зачем "передать этому \'чужому\' серверу информацию о машине клиента"???
Ответ от него получишь и воспользуешься оператором print.:) Никаких дополнительный усилий не надо.:)
Название: Как обработать \'мою\' форму на \'чужом\' сервере ?
Отправлено: dynamite от 22 Июля 2003, 02:11:32
А как замену HTTP_REFERER  делать в ПХП ?
Название: Как обработать \'мою\' форму на \'чужом\' сервере ?
Отправлено: Макс от 22 Июля 2003, 02:33:00
dynamite
ты малость форумом ошибся - это форум по перл.
И учи HTTP-протокол, не будешь глупых вопросов задавать
Название: Как обработать \'мою\' форму на \'чужом\' сервере ?
Отправлено: n0name от 22 Июля 2003, 11:19:42
Документация на тему - http://www.kilobytes.by.ru/http.shtm (http://www.kilobytes.by.ru/http.shtm)
Название: Как обработать \'мою\' форму на \'чужом\' сервере ?
Отправлено: WildWizard от 23 Июля 2003, 12:19:56
Хех...Документ юнного крякера :)))))))))))))))))))))

Хмм...раз такая проблема то почему нельзя например (чисто теоритически) слать на 80 порт HTTP запрос, состевленный ручками?

Perl-то умеет работать с сокетами?
Название: Как обработать \'мою\' форму на \'чужом\' сервере ?
Отправлено: n0name от 23 Июля 2003, 12:54:41
Собственно, и perldoc LWP::Protocol где-то проскакивало, да и HTTP::Request не кто не запрещал, IO::Socket - тоже хорошая штука