updated@19:40msk 10Jul2008
source:code.txt
<?
echo '<form method=post><input size="30" type="text" name="site" value=""> <input type="submit" value="OK :)"> </form>';
function rhost($rhost){ // функция "переворачивания" домена
$out='';
$part='';
while(strpos($rhost,'.')!==false){
$part=substr($rhost,0,strpos($rhost,'.')); // берем часть
$rhost=substr($rhost,1+strpos($rhost,'.')); // удаляем их исходного
$out='.'.$part.$out; // приделываем кго и точку к резутьтату
}
$out=$rhost.$out; // в конце от исходного остается только домен верхнего уровнея , примепляем и его
return $out;
}
function pget($url){ // функция получения определенной стрницы
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HEADER, 0); // нем не нужен заголовок
//curl_setopt($ch, CURLOPT_REFERER, '');
curl_setopt($ch, CURLOPT_USERAGENT, "User-Agent=Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.8.1.14) Gecko/20080404 Firefox/2.0.0.14"); // мы - обычный юзер
curl_setopt($ch, CURLOPT_COOKIE,"YX_SEARCHPREFS=favicons:1,lang:all,ton:1,banners:,search_form:topbot,numdoc:50,target:_blank,desc:sometimes,lr:,wstat:,t:2,family:; path=/; expires=Friday, 31-Dec-10 23:59:59 GMT; domain=.yandex.ru;") ;
// ставим куки, чтобы смотреть по 50 страниц. Это экономитнесколько секунд времени и каплю денег.
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); // Уважаемый(ая?) курл, заверните нам в переменную!
$ret=curl_exec($ch); // взяли нашу страницу.
curl_close($ch);
return $ret; // и вернули
}
function sget($site){ //функция получает спиок страниц
$flag=true; //флажок :)
$page=0; // номер страницы
$counter=0; // индекс массива
while($flag===true){
$out='';
$res=pget('http://yandex.ru/yandsearch?p='.$page.'&pag=u&site='.$site.'&lang=ru&rd=0&text=rhost%3D%22'.rhost($site).'%22|rhost%3D%22'.rhost($site).'.*%22');
preg_match_all('!<span style="color:#060;">(.*?) · !si',$res,$urls); // забрали страницу и нашли О_О
foreach ($urls[1] as $i) {
$result[$counter]=str_replace("\n","",$i); //поместили все рещзультаты в общий массив
$counter++;
}
$page++;
if (strpos($res,'/yandsearch?p='.$page.'&pag=u')===false) {$flag=false;} // это определяет, есть ли следующая страница выдачи.
}
return $result;
}
if (isset($_POST['site'])){
$site=$_POST['site'];
$pages=sget($site);
sort($pages);
reset($pages);
echo "<pre>";
foreach ($pages as $i) { echo $i."\n";}
echo "</pre>";
}
echo $page;
?>
1