Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Интернет » Web-программирование » PHP: http proxy сервер

Модерирует : Cheery

 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 1 2 3

Открыть новую тему     Написать ответ в эту тему

SPlyer



Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Возможно ли написать полноценный HTTP прокси сервер например на PHP, чтобы его можно было использовать на удаленном web сервере, можно было прописать в браузере и использовать как нормальный прокси с возможностью загрузки файлов и просмотром страниц ? Может уже существуют готовые решения ?




Название исправлено. /Cheery/

Всего записей: 240 | Зарегистр. 06-06-2004 | Отправлено: 19:10 20-12-2004 | Исправлено: Cheery, 19:32 20-12-2004
SiMM

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Да.

Всего записей: 2302 | Зарегистр. 14-05-2004 | Отправлено: 19:24 20-12-2004
SPlyer



Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
есть готовые решения или можно ?

Всего записей: 240 | Зарегистр. 06-06-2004 | Отправлено: 19:28 20-12-2004
Cheery



.:МордератоР:.
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
SPlyer

Цитата:
есть готовые решения или можно ?

просто как скрипт - нельзя. нужен постоянно работающий daemon
Сомневаюсь, что кто то тебе даст возможность запустить у себя демона.
зы: готовыми решениями у нас не занимаются.. у нас решают вопросы КАК реализовать самому.

----------
Away/DND

Всего записей: 52737 | Зарегистр. 04-04-2002 | Отправлено: 19:31 20-12-2004 | Исправлено: Cheery, 19:31 20-12-2004
SPlyer



Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору


Цитата:
просто как скрипт - нельзя. нужен постоянно работающий daemon
Сомневаюсь, что кто то тебе даст возможность запустить у себя демона.
зы: готовыми решениями у нас не занимаются.. у нас решают вопросы КАК реализовать самому.
 

 
Т.е прийдется делать просто скрипт, при помощи которого можно загружать страницы ? А можно каким-нибудь образом самому запустить deamon ?

Всего записей: 240 | Зарегистр. 06-06-2004 | Отправлено: 20:24 20-12-2004
Cheery



.:МордератоР:.
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
SPlyer

Цитата:
А можно каким-нибудь образом самому запустить deamon ?  

если ты не админ, то нет.. на хостинге бесплатном вообще не дадут сделать..
на платном тоже могут быть проблемы.  

Цитата:
Т.е прийдется делать просто скрипт, при помощи которого можно загружать страницы ?  

да

----------
Away/DND

Всего записей: 52737 | Зарегистр. 04-04-2002 | Отправлено: 20:28 20-12-2004
SPlyer



Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору

Цитата:
если ты не админ, то нет.. на хостинге бесплатном вообще не дадут сделать..
на платном тоже могут быть проблемы.  

Я не админ но хостинг платный, какие могут быть проблемы ?

Всего записей: 240 | Зарегистр. 06-06-2004 | Отправлено: 20:44 20-12-2004
Cheery



.:МордератоР:.
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
SPlyer

Цитата:
какие могут быть проблемы

спроси хостера - даст ли он возможность запустить демона или вечно работающий php скрипт.

----------
Away/DND

Всего записей: 52737 | Зарегистр. 04-04-2002 | Отправлено: 20:51 20-12-2004
SiMM

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
нужен постоянно работающий daemon
Зачем?

Всего записей: 2302 | Зарегистр. 14-05-2004 | Отправлено: 21:15 20-12-2004
Cheery



.:МордератоР:.
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
SiMM

Цитата:
Зачем?

а как еще порты слушать?

----------
Away/DND

Всего записей: 52737 | Зарегистр. 04-04-2002 | Отправлено: 21:49 20-12-2004
SiMM

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
А зачем их слушать? Как происходит работа с proxy? В браузере указывается прокси-сервер, который все запросы перенаправляет не на запрашиваемый сервер, а на другой (и что нам может помешать его обработать?). Запрос к проксе при этом, если не ошибаюсь, выглядит как-то так
GET real_url HTTP/1.1
Host: proxy_server
ну и остальные хидеры
Всё что нам нужно - передать этот запрос $_SERVER['REQUEST_URI'] дальше (для этого нам скорее всего желательно иметь PHP как модуль Apache, а не как CGI) и "выплюнуть" в браузер пользователя полученный отклик.
PS: я не претендую на истину - вопрос мною ещё не был исследован - однако, я так понимаю, всё должно выглядеть примерно так. Естесственно ещё придётся помучиться, в частности, с куками и другой дребеденью (придётся куки хранить на сервере и пользователя как-то идентифицировать при входе, чтобы сопоставить его с личным набором кукисов).

Всего записей: 2302 | Зарегистр. 14-05-2004 | Отправлено: 21:59 20-12-2004
Cheery



.:МордератоР:.
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
SiMM

Цитата:
А зачем их слушать? Как происходит работа с proxy? В браузере указывается прокси-сервер, который все запросы перенаправляет не на запрашиваемый сервер, а на другой (и что нам может помешать его обработать?). Запрос к проксе при этом, если не ошибаюсь, выглядит как-то так  
GET real_url HTTP/1.1  
Host: proxy_server  
ну и остальные хидеры  

ок, сделаешь ты так и? первый вопрос, который возникает, как ты укажешь какой скрипт тебе нужно вызвать? где ему место в это real_url?
ок, пропишешь ты его ручками, но браузер то не будет знать, что его нужно вставлять. это еще лишняя морока. либо настраивать апач так, чтобы он все кидал на какой то скрипт, но не думаю, что ему дадут это сделать.
да и все равно. с его точки зрения запрос вида GET http:// будет ошибочным.


----------
Away/DND

Всего записей: 52737 | Зарегистр. 04-04-2002 | Отправлено: 22:26 20-12-2004 | Исправлено: Cheery, 22:33 20-12-2004
SiMM

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Cheery, fsockopen, в частности, пример от 30-Jan-2003 07:00.
Цитата:
первый вопрос, который возникает, как ты укажешь какой скрипт тебе нужно вызвать?
А зачем? Все запросы заруливать на proxy.php mod_rewrite'м.

Всего записей: 2302 | Зарегистр. 14-05-2004 | Отправлено: 22:42 20-12-2004
Cheery



.:МордератоР:.
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
SiMM

Цитата:
А зачем? Все запросы заруливать на proxy.php mod_rewrite'м.  

ну я написал, что настраивать апач.
брр.. а при чем здесь fsockopen?


----------
Away/DND

Всего записей: 52737 | Зарегистр. 04-04-2002 | Отправлено: 22:44 20-12-2004
SiMM

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
но браузер то не будет знать, что его нужно вставлять. это еще лишняя морока.
А ему не нужно ничего знать, кроме настроек прокси-сервера, в которых ты и укажешь свой хост, где лежит скрипт, и HTTP-шный порт.
Цитата:
либо настраивать апач так, чтобы он все кидал на какой то скрипт, но не думаю, что ему дадут это сделать.
Дешёвый хостинг - проблема вопрошавшего, не так ли?
 
Добавлено

Цитата:
а при чем здесь fsockopen?
Посмотри на приведённый пример - всё должно стать понятно. Не хочешь fsockopen - пожалуйста, пользуй CURL
PS: а как ты собрался запросы куда надо делать?

Всего записей: 2302 | Зарегистр. 14-05-2004 | Отправлено: 22:45 20-12-2004
Cheery



.:МордератоР:.
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
SiMM

Цитата:
А ему не нужно ничего знать, кроме настроек прокси-сервера, в которых ты и укажешь свой хост, где лежит скрипт, и HTTP-шный порт.

ну ты читай то подряд.. я раскладывал как ветки возможных решений.

Цитата:
Посмотри на приведённый пример - всё должно стать понятно. Не хочешь fsockopen - пожалуйста, пользуй CURL  
PS: а как ты собрался запросы куда надо делать?

да это элементарно, я же не об этом говорил.
я сейчас смотрю, есть ли в спецификации HTTP 1.1 возможность передать http:// и так далее. Если нет, то до запуска скрипта и не дойдет - апач даст от ворот поворот, как в случае неправильного запроса.
 
хм.. утверждается, что должен уметь.

Цитата:
 The absoluteURI form is REQUIRED when the request is being made to a
   proxy. The proxy is requested to forward the request or service it
   from a valid cache, and return the response. Note that the proxy MAY
   forward the request on to another proxy or directly to the server
 
   specified by the absoluteURI. In order to avoid request loops, a
   proxy MUST be able to recognize all of its server names, including
   any aliases, local variations, and the numeric IP address. An example
   Request-Line would be:
 
       GET http://www.w3.org/pub/WWW/TheProject.html HTTP/1.1
 
   To allow for transition to absoluteURIs in all requests in future
   versions of HTTP, all HTTP/1.1 servers MUST accept the absoluteURI
   form in requests, even though HTTP/1.1 clients will only generate
   them in requests to proxies.

 

 
c этой точки зрения - можно, но ... мне кажется, что проще все же просто поставить прокси сервер.
 
нашел упоминания о каком то phproxomitron

----------
Away/DND

Всего записей: 52737 | Зарегистр. 04-04-2002 | Отправлено: 22:49 20-12-2004 | Исправлено: Cheery, 22:56 20-12-2004
SiMM

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
Если нет, то до запуска скрипта и не дойдет - апач даст от ворот поворот, как в случае неправильного запроса.
Это проще проверить опытным путём - жаль, лениво И кстати от HTTP требуется лишь передать данные - Апач может и не обращать внимания на подобные выкрутасы и передать дальше как ни в чём не бывало. Однако подобные реализации я по моему уже видел - у valyalaы по моему было что-то похожее
Да, и кстати, код
Код:
$url = 'http://forum.ru-board.com/topic.cgi?forum=31&topic=6811';
print_r($purl = parse_url($url));
$fp = fsockopen($purl['host'],80);
if ($fp){
  fwrite($fp,"GET $url HTTP/1.0\nHost: {$purl['host']}\n\n");
  while(!feof($fp)) echo fgets($fp);
  fclose($fp);
}
вполне даже работает
PS: апять апаздал

Всего записей: 2302 | Зарегистр. 14-05-2004 | Отправлено: 22:56 20-12-2004 | Исправлено: SiMM, 22:58 20-12-2004
SPlyer



Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
т.е нужно будет прописать в браузере что-то вроде mysite.com/proxy.php ?

Всего записей: 240 | Зарегистр. 06-06-2004 | Отправлено: 14:46 21-12-2004
UncoNNecteD



Silver Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
SPlyer
mysite.com/proxy.php?www.rambler.ru  
например так.
Так будет работать.

----------
-= Я тут чертовски давно =-

Всего записей: 4040 | Зарегистр. 21-03-2002 | Отправлено: 16:53 21-12-2004
SiMM

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
SPlyer, т.е. нужно будет прописать в браузере прокси сервер и порт (если говорить об осле - то это где-то в настройках LAN) и затем пользоваться браузером как обычно. Именно сервер, а не всякие излишества типа http:// и /proxy.php
Естесственно, единственная задача, которую будет выполнять сервер - это задача прокси Хотя наверно можно извернуться и делать выводы по $_SERVER['REQUEST_URI'] - если в его начале присутствует "левый" адрес типа http://другой_домен/... - выполняем задачу прокси, если не присутствует или он эквивалентен нашему - выполняем задачу вэб-сервера.
PS: насчёт кук я перемудрил В таком варианте вообще всё решается довольно просто - надо как-нибудь попробовать

Всего записей: 2302 | Зарегистр. 14-05-2004 | Отправлено: 18:53 21-12-2004 | Исправлено: SiMM, 18:56 21-12-2004
Открыть новую тему     Написать ответ в эту тему

Страницы: 1 2 3

Компьютерный форум Ru.Board » Интернет » Web-программирование » PHP: http proxy сервер


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru