отчего ж геморно? Если геморно, то можно использовать сокеты! К примеру:
| Код | 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 не встречал и не сталкивался, может тебе помогут профи у кого были с данным проблемы, но я лишь вижу выход в сокетах либо курле. Если дал функцию не политкорректную, либо не читабельную - извини, написана была наспех для корректировки данных без использования в деле. 
Не комментирую предложенный функционал - поскольку в сон рубит. Будут вопросы - откомментирую. 
Добавлено через 4 минуты и 12 секунд Используешь ссылку на скрипт с реализованным грабингом. Если же у тя вопрос относительно сайтов, которые хостятся на одном сервере - то это другая опера. Если нет - еще можно использовать единую базу данных.
Если то да се - перефразируй вопрос, либо добавь уточняющее. Посмотри, что тебе еще ответят. |