Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: Я робин гуд нашей городской сети
Форумы портала PHP.SU » PHP » Программирование на PHP » Я робин гуд нашей городской сети

Страниц (2): [1] 2 »
 

1. Новенький - 21 Июля, 2008 - 15:45:29 - перейти к сообщению
Здраствуйте! У нас в сети не так давно появился безлимит, но, к сожалению, не все могут позволить его себе. Хочу помочь моим бедным сосетевикам )

Смысл таков: пользователь набирает в адресе http://mynetserver[dot]lan/freeinter[dot][dot][dot]url=http://ya[dot]ru и собственно смотрит инет бесплатно ) А мне без разницы, все равно безлимит. Ну, так вот, помогите мне, никак не могу заменять все href, src и т.д. на удобный вид http://mynetserver[dot]lan/freeinter[dot][dot][dot]url=http://ya[dot]ru

Надеюсь Вы поняли что я хочу )
2. EuGen - 21 Июля, 2008 - 16:59:03 - перейти к сообщению
А при чем тут php? Зачем вообще придумывать прокси-сервер самому, если есть отличные реализации?
Советую посмотреть:
http://www[dot]squid-cache[dot]org/
3. stimul - 21 Июля, 2008 - 17:54:07 - перейти к сообщению
Чувак поставь себе UserGate и не мучайся
4. EuGen - 21 Июля, 2008 - 20:21:58 - перейти к сообщению
Не забудьте так же настроить Ваш маршрутизатор так, чтобы он прибавлял +1 к TTL проходящих пакетов, иначе за это "робингудство" провайдер не похвалит.
5. Новенький - 22 Июля, 2008 - 03:36:16 - перейти к сообщению
Мне бы на PHP...
6. kamikadze - 22 Июля, 2008 - 09:35:17 - перейти к сообщению
Только с картинками напряг, а так все в порядке, читать можно. И ссылки тоже лагают, потому лучше по странице пройтись регулярами
7. Новенький - 22 Июля, 2008 - 10:15:58 - перейти к сообщению
Я сделал по другому:

PHP:
скопировать код в буфер обмена
  1. $filecontent = @file_get_contents($url);
  2.  
  3.     $filecontent = preg_replace("!<a.*?href=\"http://([^ \"'>]+)\"?'?.*?>(.*?)</a>!is","<a href=\"http://10.2.27.18/free/?freeurl=http://\\1\">\\2</a>",$filecontent);
  4.     $filecontent = preg_replace("!<a.*?href=\"/([^ \"'>]+)\"?'?.*?>(.*?)</a>!is","<a href=\"http://10.2.27.18/free/?freeurl=$domen\\1\">\\2</a>",$filecontent);
  5.     $filecontent = preg_replace("!<link.*?href=\"/([^ \"'>]+)\"?'?.*?>!is","<link rel=\"stylesheet\" href=\"http://10.2.27.18/free/?freeurl=$domen\\1\">",$filecontent);
  6.     $filecontent = preg_replace("!<link.*?href=\"([^ \"'>]+)\"?'?.*?>!is","<link rel=\"stylesheet\" href=\"http://10.2.27.18/free/?freeurl=$domen/\\1\">",$filecontent);
  7.     $filecontent = preg_replace("!background=\"/([^ \"'>]+)\"!is","background=\"http://10.2.27.18/free/?freeurl=".$domen."\\1\"",$filecontent);
  8.     $filecontent = preg_replace("!background=\"([^ \"'>]+)\"!is","background=\"http://10.2.27.18/free/?freeurl=".$domen."/\\1\"",$filecontent);
  9.     $filecontent = preg_replace("!action=\"/([^ \"'>]+)\"!is","action=\"http://10.2.27.18/free/?freeurl=".$domen."\\1\"",$filecontent);
  10.     $filecontent = preg_replace("!action=\"([^ \"'>]+)\"!is","action=\"http://10.2.27.18/free/?freeurl=".$domen."/\\1\"",$filecontent);
  11.     $filecontent = preg_replace("!src=\"/([^ \"'>]+)\"!is","src=\"http://10.2.27.18/free/?freeurl=".$domen."\\1\"",$filecontent);
  12.     $filecontent = preg_replace("!src=\"([^ \"'>]+)\"!is","src=\"http://10.2.27.18/free/?freeurl=".$domen."/\\1\"",$filecontent);
  13.     $filecontent = preg_replace("!url\(/([^ \"'>]+)\)!is","url(http://10.2.27.18/free/?freeurl=".$domen."\\1)",$filecontent);
  14.     $filecontent = preg_replace("!url\(([^ \"'>]+)\)!is","url(она стоhttp://10.2.27.18/free/?freeurl=".$domen."/\\1)",$filecontent);


Но все равно здесь не все условия оговариваются и не ввсе заменяется (

И мне нужно, чтобы не одна страница была доступна, а все которые есть на сайте. Поэтому я и заменяю ссылки, src'шки и т.д.
Т.е. была http://ya.ru/about.php, а стала http://mynetserver[dot]lan/free/?fre[dot][dot][dot]/ya[dot]ru/about.php

И картинки чтобы по аналогии

Т.е. мне нужно пробежаться по всем ссылкам, изображениям, скриптам (<script></script>), <link'ам и т.д, проверить каждую на разные условия (есть или нету протокола, есть ли адрес сайта, который посещаем, если нету то мы добавим из $_GET['freeurl']) и изменить собственно
8. Джур - 22 Июля, 2008 - 12:03:47 - перейти к сообщению
я такую штуку делал но ссылки заменял не РНР а JavaScript... ибо значительно проще...

PHP:
скопировать код в буфер обмена
  1. <?
  2. if(!isset($_GET['url'])) $_GET['url']='http://ya.ru';
  3. $x=file_get_contents($_GET['url']);
  4. echo $x;
  5. echo '<script>
  6. for(i=0;i<document.links.length;i++){
  7.  document.links[i].href="'.$_SERVER['PHP_SELF'].'?url="+escape(document.links[i].href);
  8. }
  9. </script>';

с картинками сами разберетесь, там по аналогии Закатив глазки
9. Новенький - 22 Июля, 2008 - 13:43:01 - перейти к сообщению
Странно, но когда в картинках заменяется SRC, то картинки попросту не появляются...

Код:
CODE (text):
скопировать код в буфер обмена
  1. <img border="0" src="http://10.2.27.10/free/?freeurl=http://10.2.27.11/01.jpg">
при этом я использую file_get_contents()
10. ПхП-ломастер - 22 Июля, 2008 - 16:10:07 - перейти к сообщению
Находите все ссылки ф-ей preg_replace_callback(pattern,function,string). Собственно в функции и обрабатывайте.
11. EuGen - 22 Июля, 2008 - 16:49:29 - перейти к сообщению
А если хочется передать POST-параметры .. тоже include будете делать?
12. kamikadze - 22 Июля, 2008 - 16:56:33 - перейти к сообщению
Улыбка Ну я сделал такое чудо только для чтения БАШа пару человекам у которых закончился инет, а так разве что проксю надо писать...
13. EuGen - 22 Июля, 2008 - 17:00:31 - перейти к сообщению
Вот к тому и сводится вопрос. А зачем писать прокси-сервер если есть отличные готовые реализации?
А в скрипте всего не опишешь..
А если я хочу послушать интернет-радио? .. Потоковое видео.. Примеров - масса..
14. Джур - 22 Июля, 2008 - 20:18:16 - перейти к сообщению
EuGen пишет:
А если я хочу послушать интернет-радио?

Да, тогда проще юзать простой прокси сервер...

Но если уж именно на РНР, можно написать скрипт который будет работать как обычный http-прокси. Тоесть слушать порт, например 8080 и обрабатывать запросы HTTP_1.0
Тогда не надо ничего лишнего. Улыбка
15. Гость - 26 Июля, 2008 - 00:29:20 - перейти к сообщению
Вот что, советую CGIProxy...
Да, это на Perl, а не на PHP, зато заменяет ссылки полностью: и обычные, и картинки, и в скриптах динамически (Т.е. даже если сылка не является литералом в переменной, а генерируется динамически)... И самое главное полность созраняется вид Web-страницы и работочпособность скриптов!
Плюс куча настроек и конфидециальность Cookie
Лучшего Web-проксера я не видел... Качайте: http://www[dot]jmarshall[dot]com/tools/c[dot][dot][dot]2[dot]1beta17[dot]tar[dot]gz
CGIProxy можно настроить так, чтобы он вставлял Вашу рекламу в страницы и убирал чужую
Для пущей убедительности посмотрите CGIProxy в действии (Без вставки рекламы и всяких крезаний страниц): http://cgiproxy[dot]oks71[dot]ru/ или http://cgiproxy[dot]oks71[dot]biz/ (Кстати во втором можете творить что хотите, он завтра закрывается Улыбка)

А так лучше пользоваться Не-Web проксей типа Squid или UserGate

 

Powered by ExBB FM 1.0 RC1