Создать экономию траффика

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, не пойму почему.
 

nerezus

Вселенский отказник
Kotofeich

Во-первых, toonel.net

Во-вторых, чтай правила форума.

В-третьих, используй поиск.
 

Kotofeich

Новичок
Тунелем пользуюсь, но у него куча проблем, которые меня не устраивают.
За несоблюдение правил извиняюсь. Были бы вложения, я бы лучше вложил код.
Про поиск я написал, что уже вторые сутки в инете копаю по рус и ин.яз сайтам.
 

Kotofeich

Новичок
Понял. Прочитал глупое руководство:)Короче проект нереальный как я понял.
 

Invizz

Новичок
я такое делал. давно. только осложнялось выгрузкой на фтп =)

было много кода и парса, на контент яваскрипта забивал в принципе.

было давно, года 3 назад. когда интернета не было, работало.

была проблема с инклуженными файлами, но все было на уровне "есть желание - все проблемы решатся". =)

так что если других вариантов нет - можно и попариться. если есть - то лучше не надо. Проще сервер где нить взять и гонять траф через соксы
 

WP

^_^
Ыыы... меня всегда улыбали такие реализации. Для таких целей юзается ПРОКСИ, в традиционном понятии этого слова. Это и проще и быстрее, и функциональнее.
 

Kotofeich

Новичок
Invizz, как это когда интернета не было, работало?:))
Это в локалке чтоли?
А наработки остались?
Другие варианты меня не интересуют, есть цель - надо делать.
 

themylogin

Новичок
Купить самый дешёвый VDS (firstvds start - 200 метров, 5 гиг трафик), поставить на него прокси-сервер и радоваться жизни.
 

Kotofeich

Новичок
Ну народ, не тупой я, что проксик можно поставить. Не в
этом цель.
 
Сверху