Форум АНТИЧАТ

Форум АНТИЧАТ (https://forum.antichat.xyz/index.php)
-   PHP, PERL, MySQL, JavaScript (https://forum.antichat.xyz/forumdisplay.php?f=37)
-   -   Обработка ссылок. (https://forum.antichat.xyz/showthread.php?t=95204)

rcc0023 07.12.2008 15:09

Обработка ссылок.
 
Скрипт загружает контекст внешней страницы, значение которой присваивается переменной $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>), но остальной контекст брал с внешнего сайта (ссылки на стиль, картинки, флеш делал прямыми)?

rcc0023 07.12.2008 15:59

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

Pashkela 07.12.2008 16:48

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

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

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

от начала и до конца

rcc0023 07.12.2008 19:12

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

А сайт такой: 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"

Gifts 07.12.2008 21:03

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); 


rcc0023 07.12.2008 21:29

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

Gifts 07.12.2008 21:33

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


Время: 09:39