Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> проксирование запроса, .htaccess 
:(
    Опции темы
zmaxon
Дата 6.3.2010, 20:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 38
Регистрация: 6.12.2009

Репутация: нет
Всего: нет



добрый вечер smile

есть такая задачка.. требуется получать по запросу 
http://мой_сайт.ru/site/http://другой_мой_сайт.ru/
содержимое другого сайта, т.е. по сути полный редирект, но без изменения url

это вроде бы как называется проксирование запроса и делается приблизительно так:
>RewriteRule (.*) http://<мало-ли куда>:<и на какой порт>/$1 [L,P,QSA] 
- пример у меня не работает :(

но дополнительная сложность в том, что мне необходимо динамически менять адреса, т.е. при запросах

http://мой_сайт.ru/site/http://мой_сайт_1.ru/
http://мой_сайт.ru/site/http://мой_сайт_2.ru/page.html
http://мой_сайт.ru/site/http://мой_сайт_3.ru/ololo/1.html

выдавать содержимое страниц 
http://мой_сайт_1.ru/
http://мой_сайт_2.ru/page.html
http://мой_сайт_3.ru/ololo/1.html

соответственно


буду благодарен за помошь, спасибо

Добавлено через 1 минуту и 50 секунд
вот приблизительно что мне надо

ЦИТАТА:

Самое простое решение - это проксирование запроса сервером. То есть, site1.net делает специальный запрос, например, на особенный URL
типа http://site1.net/proxy/site2.net/test.html, и сервер site1.net проксирует его на http://site2.net/test.html.



PM MAIL   Вверх
Zmiuko
Дата 7.3.2010, 00:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


http://zmiuko.ru
**


Профиль
Группа: Участник
Сообщений: 297
Регистрация: 8.10.2008

Репутация: 2
Всего: 2



Думаю без сокетов или curl ты не обойдешься. Если у кого другое мнение - только интересно, поскольку реализацию через htaccess я еще не наблюдал.
PM MAIL WWW ICQ Skype Jabber   Вверх
zmaxon
Дата 7.3.2010, 01:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 38
Регистрация: 6.12.2009

Репутация: нет
Всего: нет



да, вот хочется другой способ какой-нить)
а то в curl, сокеты гемморно с кодировкой
PM MAIL   Вверх
Zmiuko
Дата 7.3.2010, 01:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


http://zmiuko.ru
**


Профиль
Группа: Участник
Сообщений: 297
Регистрация: 8.10.2008

Репутация: 2
Всего: 2



отчего ж геморно? Если геморно, то можно использовать сокеты! К примеру:

Код

    function socket_do($host,$vars,$service_uri,$browser,$cookies='',$sread=1,$method='POST',$ref='',$addheaders=1,$proxy=false,$proxyport=0,$HTTP='1.0') {
    usleep(rand(1000000,2000000));
    $ret = null;

    if($method == 'GET' && $vars) {
        $service_uri.= '?'.$vars;
        $vars = '';
    }

    $header = "Host: ".$host."\r\n";
    $header.= "User-Agent: ".$browser."\r\n";

    if($addheaders == 1) {
        $header.= "Content-Type: application/x-www-form-urlencoded\r\n";
        $header.= "Content-Length: ".strlen($vars)."\r\n";
    } else if($addheaders == 0) {
        $header.= "Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5\r\n";
        $header.= "Accept-Language: ru-ru,ru;q=0.8,en-us;q=0.5,en;q=0.3\r\n";
        $header.= "Accept-Encoding: \r\n";
        $header.= "Accept-Charset: windows-1251,utf-8;q=0.7,*;q=0.7\r\n";
    } else if($addheaders == 4) {
        $header.= "Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5\r\n";
        $header.= "Accept-Language: ru-ru,ru;q=0.8,en-us;q=0.5,en;q=0.3\r\n";
        $header.= "Accept-Encoding: \r\n";
        $header.= "Accept-Charset: windows-1251,utf-8;q=0.7,*;q=0.7\r\n";
        $header.= "Content-Type: application/x-www-form-urlencoded; charset=UTF-8\r\n";
        $header.= "X-Requested-With: XMLHttpRequest\r\n";
    } else if($addheaders == 14) {        
        $header.= "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8\r\n";
        $header.= "Accept-Language: ru,en-us;q=0.7,en;q=0.3\r\n";
        $header.= "Accept-Encoding: \r\n";
        $header.= "Accept-Charset: windows-1251,utf-8;q=0.7,*;q=0.7\r\n";
        $header.= "Content-Length: ".strlen($vars)."\r\n";
        $header.= "Content-Type: application/x-www-form-urlencoded; charset=UTF-8\r\n";
        $header.= "X-Requested-With: XMLHttpRequest\r\n";

    } else if($addheaders == 2) {
        $header.= "Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5\r\n";
        $header.= "Accept-Language: ru-ru,ru;q=0.8,en-us;q=0.5,en;q=0.3\r\n";
        $header.= "Accept-Encoding: \r\n";
        $header.= "Accept-Charset: windows-1251,utf-8;q=0.7,*;q=0.7\r\n";
        $header.= "Pragma: no-cache\r\n";
        $header.= "Cache-Control: no-cache\r\n";
        $header.= "Content-Length: ".strlen($vars)."\r\n";
        $header.= "Content-Type: application/x-www-form-urlencoded; charset=windows-1251\r\n";
    } else if($addheaders == 5) {
        $header.= "Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5\r\n";
        $header.= "Accept-Language: ru-ru,ru;q=0.8,en-us;q=0.5,en;q=0.3\r\n";
        $header.= "Accept-Encoding: \r\n";
        $header.= "Accept-Charset: windows-1251,utf-8;q=0.7,*;q=0.7\r\n";
        $header.= "Pragma: no-cache\r\n";
        $header.= "Cache-Control: no-cache\r\n";
        $header.= "Content-Length: ".strlen($vars)."\r\n";
        $header.= "Content-Type: application/x-www-form-urlencoded\r\n";
    } else if($addheaders == 115) {
        $header.= "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8\r\n";
        $header.= "Accept-Language: ru,en-us;q=0.7,en;q=0.3\r\n";
        $header.= "Accept-Encoding: gzip,deflate\r\n";
        $header.= "Accept-Charset: windows-1251,utf-8;q=0.7,*;q=0.7\r\n";
        $header.= "Pragma: no-cache\r\n";
        $header.= "Cache-Control: no-cache\r\n";
        $header.= "Content-Length: ".strlen($vars)."\r\n";
        $header.= "Content-Type: application/x-www-form-urlencoded\r\n";
    } else if($addheaders == 3) {
        $header.= "Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5\r\n";
        $header.= "Accept-Language: ru-ru,ru;q=0.8,en-us;q=0.5,en;q=0.3\r\n";
        $header.= "Accept-Encoding: gzip,deflate\r\n";
        $header.= "Accept-Charset: windows-1251,utf-8;q=0.7,*;q=0.7\r\n";
    } else if($addheaders == 9) {
        $header.= "----OLEG-ANDREEV-PAVEL-DUROV-GRAFFITI-POST\r\n";
        $header.= "Content-Disposition: form-data; name=\"Signature\"\r\n";
        $header.= "\r\n";
        $header.= md5(substr(base64_encode(file_get_contents($vars)), 0, 1024))."\r\n";
        $header.= "----OLEG-ANDREEV-PAVEL-DUROV-GRAFFITI-POST\r\n";
        $header.= "Content-Disposition: form-data; name=\"Filedata\"; filename=\"graffiti.png\"\r\n";
        $header.= "Content-Type: image/png\r\n";
        $header.= "\r\n";
        $header.= file_get_contents($vars)."Content-Disposition: form-data; name=\"Upload\"\r\n";
        $header.= "\r\n";
        $header.= "Submit Query\r\n";
        $header.= "----OLEG-ANDREEV-PAVEL-DUROV-GRAFFITI-POST--";
        $header.= "Accept-Encoding: gzip,deflate\r\n";
        $header.= "x-flash-version: 9,0,47,0\r\n";
        $header.= "Content-Type: multipart/form-data; boundary=--OLEG-ANDREEV-PAVEL-DUROV-GRAFFITI-POST\r\n";
        $header.= "Content-Length: ".strlen($vars)."\r\n";
        $header.= "Cache-Control: no-cache\r\n";
    } else if($addheaders == 10) {
        $header.= "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8\r\n";
        $header.= "Accept-Language: ru,en-us;q=0.7,en;q=0.3\r\n";
        #$header.= "Accept-Encoding: gzip,deflate\r\n";
        $header.= "Accept-Charset: windows-1251,utf-8;q=0.7,*;q=0.7\r\n";
    }
  
    if($ref) { $header.= "Referer: ".$ref."\r\n"; }
    $header.= "Connection: close\r\n";
    if($cookies) { $header.= "Cookie: ".$cookies."\r\n"; }
    $header.= "\r\n";


    if($proxy) {
        $addquery    = $method." http://".$host.$service_uri."  HTTP/".$HTTP."\r\n";
        $fp        = fsockopen("tcp://".'77.246.207.199','8081',$errno,$errstr,30);
    } else {
        $addquery    = $method." ".$service_uri."  HTTP/".$HTTP."\r\n";
        $fp        = fsockopen("tcp://".$host,80,$errno,$errstr,30);
    }

    stream_set_timeout($fp,30);

    if(!$fp) {
        print "<font color=red>Socket error: <i>".$errstr." (".$errno.")</i></font><br>";
        return '';
    }

    fputs($fp,$addquery);
    fputs($fp,$header.$vars);

    #echo $addquery.$header.$vars;
    if($sread) {
        while(!feof($fp)) {
            $ret.=fgets($fp, 128);
        }
    }

    fclose($fp);

    return $ret;
}


Вот функция, если разберешься с ней. 

Просто я подобных решений с htaccess не встречал и не сталкивался, может тебе помогут профи у кого были с данным проблемы, но я лишь вижу выход в сокетах либо курле. Если дал функцию не политкорректную, либо не читабельную - извини, написана была наспех для корректировки данных без использования в деле. smile

Не комментирую предложенный функционал - поскольку в сон рубит. Будут вопросы - откомментирую. smile

Добавлено через 4 минуты и 12 секунд
Используешь ссылку на скрипт с реализованным грабингом. Если же у тя вопрос относительно сайтов, которые хостятся на одном сервере - то это другая опера. Если нет - еще можно использовать единую базу данных.

Если то да се - перефразируй вопрос, либо добавь уточняющее. Посмотри, что тебе еще ответят.
PM MAIL WWW ICQ Skype Jabber   Вверх
brother79
Дата 12.5.2010, 09:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 471
Регистрация: 18.8.2009

Репутация: 2
Всего: 6



Цитата(Zmiuko @  7.3.2010,  05:47 Найти цитируемый пост)
Просто я подобных решений с htaccess не встречал и не сталкивался, может тебе помогут профи у кого были с данным проблемы, но я лишь вижу выход в сокетах либо курле. Если дал функцию не политкорректную, либо не читабельную - извини, написана была наспех для корректировки данных без использования в деле. smile


А ты и не сделаешь с htaccess. На другой сайт его не зарулишь без редиректа, я пытался - бесполезно, только на свой можно заруливать.

Тут кстати ещё можно фреймом, но даст ли это то, что нужно автору - сомнительно

Это сообщение отредактировал(а) brother79 - 12.5.2010, 09:27


--------------------
PM MAIL WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0758 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.