Kotofeich
Новичок
Создать экономию траффика
Кто не знает webwraper- такая штука, которая передает странички от сервака к пользователю сжатыми gzip.
Но ее прикрыли, так как бесплатного сыра не бывает, и теперь полно таких платных сервисов. Реально траффик экономиться в раз 10.
Короче есть предложение обьедениться и создать свой бесплатный скрипт, и пользоваться вволю.
Уже вторые сутки лазею по инету в поисках каких-то нароботок и кусков.
Вот что у меня получилось собрать:
<?php
//<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
ob_start('ob_gzhandler');
$url = $_GET['url'];
$text = file_get_contents($url);
$text=preg_replace_callback('@(?<=src=)([\w\W][^\>\s]*)@i', 'src_replace', $GLOBALS["text"]);
echo preg_replace_callback('@(?<=href=)([\w\W][^\>\s]*)@i', 'http_replace', $text);
echo " Dumping <br>";
echo " Dumping Get <br>";
print_r ($_GET);
echo "<br>";
echo "Dumping Post <br>";
print_r ($_POST);
echo "<br>End dumping<br>";
function http_replace($matches)
{
$quotshreder = strtok($matches[1], '\"\'');
if (strpos($quotshreder,'?')>0)
$quotshreder=substr($quotshreder,0,strpos($quotshreder,'?')).'&'.substr($quotshreder,strpos($quotshreder,'?')+1);
$url = $_GET['url'];
$host_url=ret_url_host($url);
/*
$text = $quotshreder;
$i = null;
$path = null;
$levels = null;
$q = null;
$path_url=ret_url_path($url);
$scheme_url=ret_url_scheme($url);
$levels = explode('/', $path_url);
$zad = explode('/', $text);
*/
//Если это иконка
if(strpos($quotshreder, 'ico') !== FALSE)
return $quotshreder;
//Если это css-стиль
if(strpos($quotshreder, 'css') !== FALSE)
if (strpos($quotshreder, 'http://') !== FALSE)
return $quotshreder;
else 'http://'.$host_url.''.$quotshreder;
// проверка на емэйл
if(strpos($quotshreder, 'mailto://') !== FALSE)
return 'http://192.168.0.1/test4.php?url='.$quotshreder;
// проверка на javascript
if(strpos($quotshreder, 'javascript:') !== FALSE)
return 'http://192.168.0.1/test4.php?url='.$quotshreder;
// проверка на адреса типа http://xxxxxx
if(strpos($quotshreder, 'http://') !== FALSE)
return 'http://192.168.0.1/test4.php?url='.$quotshreder;
//иначе это локальная ссылка
else
return 'http://192.168.0.1/test4.php?url=http://'.$host_url.''.$quotshreder;
}
function ret_url_host($match)
//возвращает хост из запрошенного url
//
{
$arr=parse_url($match);
if (array_key_exists("host", $arr)) {
$str=$arr["host"];
$last = $str{strlen($str)-1};
if ($last!=='/')
return $arr["host"].'/';
}
else
{
return "";
}
}
function src_replace($matches)
{
//обработка картинок!!!!!!
$quotshreder = strtok($matches[1], '\"\'');
$url = $_GET['url'];
$host_url=ret_url_host($url);
if(strpos($quotshreder, 'http://') !== FALSE)
return $quotshreder;
else
return 'http://'.$host_url.''.$quotshreder;
}
?>
Работает так:
Допустим это файл gzip.php. Заливаешь его на сервер и заходишь
http://www.yoursite.ru/gzip.php?url=http://www.yandex.ru
Проблем у него много.
Например не получается лазить по сайтам сделаным на joomla, не пойму почему.
Кто не знает webwraper- такая штука, которая передает странички от сервака к пользователю сжатыми gzip.
Но ее прикрыли, так как бесплатного сыра не бывает, и теперь полно таких платных сервисов. Реально траффик экономиться в раз 10.
Короче есть предложение обьедениться и создать свой бесплатный скрипт, и пользоваться вволю.
Уже вторые сутки лазею по инету в поисках каких-то нароботок и кусков.
Вот что у меня получилось собрать:
<?php
//<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
ob_start('ob_gzhandler');
$url = $_GET['url'];
$text = file_get_contents($url);
$text=preg_replace_callback('@(?<=src=)([\w\W][^\>\s]*)@i', 'src_replace', $GLOBALS["text"]);
echo preg_replace_callback('@(?<=href=)([\w\W][^\>\s]*)@i', 'http_replace', $text);
echo " Dumping <br>";
echo " Dumping Get <br>";
print_r ($_GET);
echo "<br>";
echo "Dumping Post <br>";
print_r ($_POST);
echo "<br>End dumping<br>";
function http_replace($matches)
{
$quotshreder = strtok($matches[1], '\"\'');
if (strpos($quotshreder,'?')>0)
$quotshreder=substr($quotshreder,0,strpos($quotshreder,'?')).'&'.substr($quotshreder,strpos($quotshreder,'?')+1);
$url = $_GET['url'];
$host_url=ret_url_host($url);
/*
$text = $quotshreder;
$i = null;
$path = null;
$levels = null;
$q = null;
$path_url=ret_url_path($url);
$scheme_url=ret_url_scheme($url);
$levels = explode('/', $path_url);
$zad = explode('/', $text);
*/
//Если это иконка
if(strpos($quotshreder, 'ico') !== FALSE)
return $quotshreder;
//Если это css-стиль
if(strpos($quotshreder, 'css') !== FALSE)
if (strpos($quotshreder, 'http://') !== FALSE)
return $quotshreder;
else 'http://'.$host_url.''.$quotshreder;
// проверка на емэйл
if(strpos($quotshreder, 'mailto://') !== FALSE)
return 'http://192.168.0.1/test4.php?url='.$quotshreder;
// проверка на javascript
if(strpos($quotshreder, 'javascript:') !== FALSE)
return 'http://192.168.0.1/test4.php?url='.$quotshreder;
// проверка на адреса типа http://xxxxxx
if(strpos($quotshreder, 'http://') !== FALSE)
return 'http://192.168.0.1/test4.php?url='.$quotshreder;
//иначе это локальная ссылка
else
return 'http://192.168.0.1/test4.php?url=http://'.$host_url.''.$quotshreder;
}
function ret_url_host($match)
//возвращает хост из запрошенного url
//
{
$arr=parse_url($match);
if (array_key_exists("host", $arr)) {
$str=$arr["host"];
$last = $str{strlen($str)-1};
if ($last!=='/')
return $arr["host"].'/';
}
else
{
return "";
}
}
function src_replace($matches)
{
//обработка картинок!!!!!!
$quotshreder = strtok($matches[1], '\"\'');
$url = $_GET['url'];
$host_url=ret_url_host($url);
if(strpos($quotshreder, 'http://') !== FALSE)
return $quotshreder;
else
return 'http://'.$host_url.''.$quotshreder;
}
?>
Работает так:
Допустим это файл gzip.php. Заливаешь его на сервер и заходишь
http://www.yoursite.ru/gzip.php?url=http://www.yandex.ru
Проблем у него много.
Например не получается лазить по сайтам сделаным на joomla, не пойму почему.
