Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей.
Здесь обсуждаются безопасность, программирование, технологии и многое другое.
Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz
 |

07.12.2008, 15:09
|
|
Участник форума
Регистрация: 03.07.2008
Сообщений: 177
Провел на форуме: 644324
Репутация:
11
|
|
Обработка ссылок.
Скрипт загружает контекст внешней страницы, значение которой присваивается переменной $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>), но остальной контекст брал с внешнего сайта (ссылки на стиль, картинки, флеш делал прямыми)?
|
|
|

07.12.2008, 15:59
|
|
Участник форума
Регистрация: 03.07.2008
Сообщений: 177
Провел на форуме: 644324
Репутация:
11
|
|
не проходите мимо... =/ очень нужна помощь...
|
|
|

07.12.2008, 16:48
|
|
Динозавр
Регистрация: 10.01.2008
Сообщений: 2,841
Провел на форуме: 9220514
Репутация:
3338
|
|
Давай ссылку на нужный сайт, откуда надо парсить и изменять, если не можешь - то образец исходников нужного сайта + четкое условие того, что надо спарсить, т.е. вот это " <a_href=></a>)" не совсем понятно, + четкое условие на что заменить внутри, не трогая остальное
а также почитай вот эту страницу
http://forum.antichat.ru/threadnav92492-7-10.html
от начала и до конца
|
|
|

07.12.2008, 19:12
|
|
Участник форума
Регистрация: 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..
|
|
|

07.12.2008, 21:03
|
|
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);
|
|
|

07.12.2008, 21:29
|
|
Участник форума
Регистрация: 03.07.2008
Сообщений: 177
Провел на форуме: 644324
Репутация:
11
|
|
А как это все будет выглядеть при использовании replace ??
|
|
|

07.12.2008, 21:33
|
|
Reservists Of Antichat - Level 6
Регистрация: 25.04.2008
Сообщений: 827
Провел на форуме: 2769640
Репутация:
1304
|
|
rcc0023 Я не знаю, что это за функция у тебя) Для моего кода - в качестве $in берешь всю страницу исходную, тогда preg_replace все заменит.
|
|
|
|
 |
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|