ANTICHAT.XYZ    VIDEO.ANTICHAT.XYZ    НОВЫЕ СООБЩЕНИЯ    ФОРУМ  
Баннер 1   Баннер 2
Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей. Здесь обсуждаются безопасность, программирование, технологии и многое другое. Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz
Вернуться   Форум АНТИЧАТ > Программирование > PHP, PERL, MySQL, JavaScript
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

Обработка ссылок.
  #1  
Старый 07.12.2008, 15:09
Аватар для rcc0023
rcc0023
Участник форума
Регистрация: 03.07.2008
Сообщений: 177
Провел на форуме:
644324

Репутация: 11
Question Обработка ссылок.

Скрипт загружает контекст внешней страницы, значение которой присваивается переменной $content

Данный код делает из скрипта полноценный прокси...
Цитата:
preg_match_all("#(<a|link|area)[\s].*?href[\s]*=[\s]*\\\?\"?'?(.*?)\\\?[\"'\s>]#is",$content,$href_array);
replace($href_array[0],$href_array[0],$href_array[2],"?session=","");
preg_match_all("#<(img|embed|frame|iframe|input|sc ript)[\s][^>]*?src[\s]*=[\s]*\\\?\"?'?([^>]*?)\\\?[\"'\s>]#is",$content,$src_array);
replace($src_array[0],$src_array[0],$src_array[2],"?session=","");
preg_match_all("#\.src[\s]*=[\s]*[\"'](.*?)[\"']#is",$content,$script_src_array);
replace($script_src_array[0],$script_src_array[0],$script_src_array[1],"?session=","");
preg_match_all("#<(body|table|td)[\s].*?background[\s]*=[\s]*\"?'?(.*?)[\"'\s>]#is",$content,$background_array);
replace($background_array[0],$background_array[0],$background_array[2],"?session=","");
preg_match_all("#(location.href|document.location| document.url|parent.location)[\s]*=[\s]*[\"'](.*?)[\"']#is",$content,$location_array);
replace($location_array[0],$location_array[0],$location_array[2],"?session=","");
preg_match_all("#(window.open|location.assign)\([\"'](.*?)[\"',\s>\)]#is",$content,$window_array);
replace($window_array[0],$window_array[0],$window_array[2],"?session=","");
preg_match_all("#[\"'](https?://.*?|https?%3A%2F%2F.*?)[\"'\s\)>]#is",$content_script,$http_array);
replace($http_array[0],$http_array[0],$http_array[1],"?session=","");
Что нужно изменить чтоб скрипт стал полу-прокси. То есть загружал через себя страницы (изменял ссылки вида <a_href=></a>), но остальной контекст брал с внешнего сайта (ссылки на стиль, картинки, флеш делал прямыми)?
 
Ответить с цитированием

  #2  
Старый 07.12.2008, 15:59
Аватар для rcc0023
rcc0023
Участник форума
Регистрация: 03.07.2008
Сообщений: 177
Провел на форуме:
644324

Репутация: 11
По умолчанию

не проходите мимо... =/ очень нужна помощь...
 
Ответить с цитированием

  #3  
Старый 07.12.2008, 16:48
Аватар для Pashkela
Pashkela
Динозавр
Регистрация: 10.01.2008
Сообщений: 2,841
Провел на форуме:
9220514

Репутация: 3338


Отправить сообщение для Pashkela с помощью ICQ
По умолчанию

Давай ссылку на нужный сайт, откуда надо парсить и изменять, если не можешь - то образец исходников нужного сайта + четкое условие того, что надо спарсить, т.е. вот это " <a_href=></a>)" не совсем понятно, + четкое условие на что заменить внутри, не трогая остальное

а также почитай вот эту страницу

http://forum.antichat.ru/threadnav92492-7-10.html

от начала и до конца
 
Ответить с цитированием

  #4  
Старый 07.12.2008, 19:12
Аватар для rcc0023
rcc0023
Участник форума
Регистрация: 03.07.2008
Сообщений: 177
Провел на форуме:
644324

Репутация: 11
По умолчанию

Интересненько...

А сайт такой: http://demo.heroeswm.ru/demobattle.php

Из такого кода replace($href_array[0],$href_array[0],$href_array[2],"?session=",""); получается <a href='?session='kdsfjhskdjfhkjsdhfkjhskjs?> , kdsfjhskdjfhkjsdhfkjhskjs - заходированный юрл, что и нужно.

это <img src='i/pic.jpg'> нужно заменить на <img src='http://demo.heroeswm.ru/i/pic.jpg'>

это <embed src="swffiles/combat1.swf?ver=268"
на <embed src="http://demo.heroeswm.ru/swffiles/combat1.swf?ver=268"

Последний раз редактировалось rcc0023; 07.12.2008 в 19:40..
 
Ответить с цитированием

  #5  
Старый 07.12.2008, 21:03
Аватар для Gifts
Gifts
Reservists Of Antichat - Level 6
Регистрация: 25.04.2008
Сообщений: 827
Провел на форуме:
2769640

Репутация: 1304


По умолчанию

rcc0023 Вроде бы так. Заменит все относительные ссылки, а абсолютные оставит неизменными
PHP код:
$in='<a href="/swffiles/combat1.swf?ver=268">asdasd</a>';

$newsite='http://site.com/';
echo 
preg_replace('#(src|href)=[\'"](?!http)/?([^\'"]*)[\'"]#i',"\$1='$newsite\$2'",$in); 
 
Ответить с цитированием

  #6  
Старый 07.12.2008, 21:29
Аватар для rcc0023
rcc0023
Участник форума
Регистрация: 03.07.2008
Сообщений: 177
Провел на форуме:
644324

Репутация: 11
По умолчанию

А как это все будет выглядеть при использовании replace ??
 
Ответить с цитированием

  #7  
Старый 07.12.2008, 21:33
Аватар для Gifts
Gifts
Reservists Of Antichat - Level 6
Регистрация: 25.04.2008
Сообщений: 827
Провел на форуме:
2769640

Репутация: 1304


По умолчанию

rcc0023 Я не знаю, что это за функция у тебя) Для моего кода - в качестве $in берешь всю страницу исходную, тогда preg_replace все заменит.
 
Ответить с цитированием
Ответ





Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT.XYZ