Regex From Hell
Hej. Jeg er i gang med en simpel web proxy. Den virker ved at hente en side, finde alle links og ændre dem så de referere til proxien.PROXY.PHP:
<?php
//requesting the page
$source_data = @file_get_contents($_SERVER['QUERY_STRING'], FALSE);
//Deep Link eg. http://google.com
$source_data = preg_replace('/(?<!type)=(["\']?)([a-zA-Z]{3,5}:\/\/[a-zA-Z0-9_.]{2,}\.[a-zA-Z]{2,5}[\/]?)\1/', "=$1".$_SERVER['PHP_SELF']."?$2$1",$source_data);
//Relative link eg. pic.jpg
$source_data = preg_replace('/(?<!type)=(["\']?)([a-zA-Z0-9\/%_-]+\.[a-zA-Z0-9]{2,5})[\/]?\1/',"=$1".$_SERVER['PHP_SELF']."?".$url_parsed['scheme']."://".$url_parsed['host']."/".$dir."$2$1",$source_data);
//Relative path eg. /pics/userpics NOGET ER GALT DER
$source_data = preg_replace('/(?<!type)=(["\']?)[\/]?([a-zA-Z0-9%_-]+[\/]?)+\1/',
"=$1".$_SERVER['PHP_SELF']."?".$url_parsed['scheme']."://".$url_parsed['host']."/".$dir."$2$1",$source_data);
echo $source_data;
?>
Du bruger den ved at skrive f.eks PROXY.PHP?http://google.com (husk http://)
Jeg har brugt tamperdata plugin til firefox til at se om alle requestede biller etc. går gennem scriptet. Ellers har jeg lavet en html side med links som også er god når der skal testes: http://glbyvej.dk/links.htm
Btw så er (?<!type) til fordi at scriptet ikke skal ændre f.eks <script type="text/javascript"> eller <link type="text/css"> som ellers ligner relative links.
Håber nogen kan hjælpe.
