Полезный скрипт

Здесь выкладываются ссылки на полезные источники по тематике нашего ресурса

Модератор: XseoN Founder

Полезный скрипт

Сообщение Sliper 27 авг 2012, 11:49

Согласно просьб пользователей Xseon-a (на странице http://www.xseon.ru/dialogue/viewtopic. ... &start=112 ):
1.Можно ли будет ввести "анкорность" ссылок в профилях...
2.Проверка открытости профиля (без бубна)...

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

И так, сам скрипт:
Код: выделить все
<?
   @ini_set('memory_limit','128M');
   @set_time_limit(0);
   @ini_set('max_execution_time',0);
   @ini_set('set_time_limit',0);

class backlink
{
   var $errors = '';
   var $backlink = '';
   var $backlink_parse = array();
   var $backlink_path = '';
   var $backlink_path_ar = array();

   function backlink($backlink)
   {
      $this->backlink = $backlink;
      $this->backlink_parse = parse_url($backlink);

      $this->backlink_path   = $this->backlink_parse['path'];
      if ( substr($this->backlink_path,0,1)=='/' ) $this->backlink_path = substr($this->backlink_path,1);
      if ( substr($this->backlink_path,-1)=='/' ) $this->backlink_path = substr($this->backlink_path,0,strlen($this->backlink_path)-1);

      $backlink_path_ar         = split("[/]",$this->backlink_path);
      if ( count($backlink_path_ar)>0 )
      {
         foreach ( $backlink_path_ar as $k=>$v )
         {
            $v = trim($v);
            if ( empty($v) ) unset($backlink_path_ar[$k]);
         }
      }
      if ( count($backlink_path_ar)>0 ) $this->backlink_path_ar = $backlink_path_ar;
   }

   function subpath_check($rule)
   {
      if ( count($this->backlink_path_ar)>0 )
      {
         $path = '';
         foreach ( $this->backlink_path_ar as $k=>$v )
         {
            $path.= empty($path) ? $v : "\/".$v;
            if ( preg_match('/Disallow:\s*[\/]?'.$path.'[\/\*]?\s*$/i',$rule) ) return true;
         }
      }
      return false;
   }

   function check($url)
   {
      $parse_url = parse_url($url);

      /* robotos.txt */

      $robots_url = 'http://'.$this->backlink_parse['host'].'/robots.txt';
      $robots_data_ar   = @file($robots_url);

      if ( $robots_data_ar!==false )
      {
         if ( count($robots_data_ar)>0 )
         {
            foreach ( $robots_data_ar as $k=>$v )
            {
               $v = trim($v);
               if ( !empty($v) )
               {
                  if ( preg_match('/Disallow:\s*\/\s*$/i',$v) ) // запрет индексации всего сайта
                  {
                     $this->errors = 'В '.$robots_url.' есть правило запрещающее индексировать сайт.';
                     return false;
                  }
                  if (
                     preg_match('/Disallow:\s*[\/]?'.str_replace("/","\/",$this->backlink_path).'[\/\$]\s*$/i',$v) || // запрет индексации страницы с ссылкой
                     $this->subpath_check($v) // запрет индексации пути к странице с ссылкой
                  ) {
                     $this->errors = 'В '.$robots_url.' есть правило запрещающее индексировать страницу.';
                     return false;
                  }
               }
            }
         }
      }

      /* META */

      $meta = @get_meta_tags($this->backlink);
      if (
         eregi('noindex',$meta['robots']) ||
         eregi('nofollow',$meta['robots'])
      ) {
         $this->errors = 'На странице есть META данные запрещающие её индексацию.';
         return false;
      }

      /* Link */

      $data = '';
      $fp = @fopen($this->backlink,"r");
      if ( $fp )
      {
         while (!feof($fp)) $data.= fgets ($fp,4096);
         fclose ($fp);

         $pattern = array (
            "'<script[^>]*?>.*?</script>'si", // Вырезается javascript
            "'<noscript[^>]*?>.*?</noscript>'si", // noscript
            "'<noindex[^>]*?>.*?</noindex>'si", // noindex
            "'<a[^>]*?rel=[\"\']nofollow[\"\'].*?>'si", //nofollow
            "'<\!--.*?-->'si", // remarka
         );
         $replace = array(" "," "," "," "," ");
         $data = preg_replace($pattern, $replace, $data);

         if ( preg_match_all('/<a.*?href=["\']http:\/\/(.*?)["\'](.*?)>(.*?)<\/a/i', $data, $m) ) {
            if ( count($m[1])>0 )
            {
               foreach ( $m[1] as $k=>$v ) if ( eregi($parse_url['host'],$v) )  {
      if(strip_tags(trim($m[3][$k]))==''){
         preg_match('/<img.*alt=["\'](.*)["\'].*>/iU', $m[3][$k], $imgalt);
         $outlinks[]=trim($imgalt[1]);
      }
      else $outlinks[]='<font color="#006600">'.strip_tags(trim($m[3][$k])).'</font>';
               }
            }
            return $outlinks;
         }
         $this->errors = 'Cсылка '.$url.' не найдена или не доступна к индексации.';
      }
      else $this->errors = 'Не удаётся открыть страницу ';

      return false;
   }
}

$alllinks=file('backlink.txt');
for($i=0;$i<count($alllinks);$i++){
   if(trim($alllinks[$i])!=''){
      $bl = new backlink(trim($alllinks[$i]));
      $ans=$bl->check('http://www.plati.ru');
      if ( !$ans ) $badlinks[]=trim($alllinks[$i]).' '.$bl->errors;
      else {  //echo trim($alllinks[$i]).' :'.implode('+',$ans)." OK!<br>\n";
      foreach ( $ans as $key=>$ankor ) echo trim($alllinks[$i]).' : '.(trim($ankor)!=''?trim($ankor):'<font color="#FF0000">empty</font>')."<br>\n";
      }
   }
}

echo '<hr>';
for($i=0;$i<count($badlinks);$i++){
   echo $badlinks[$i]."<br>\n";
}
?>

Как пользоваться:
Рядом со скриптом положите файл "backlink.txt", в нем сохраните ссылки на профили проверенные анализатором.
Исправьте "http://myDomenLink.ru" на ссылку продвигаемого проекта (достаточно домена, но можно и всю ссылку).
Теперь запустите скрипт набрав его адрес в адресной строке браузера.
Скрипт однопоточный - ждать придется долго (извините, но в PHP проблемы с многопоточностью).

Результат работы:
Код: выделить все
http://www.domen1.com/member.php?u=120654 : Home Page OK!
http://www.domen2.com/tamayuz/vb/member.php?u=25 : Cheap schnapps OK!
http://www.domen3.com/forum/member.php?u=10884 : Duty Free OK!
http://www.domen4.com/member.php?u=170 : Hennessey inexpensive OK!
..........
http://www.domenN.com/vb/member.php?u=2220 : Buy Cheap wine OK!
_______________________________________________________________________________
http://www.domen248.com/forums/profile.php?mode=viewprofile&u=15419 Не удаётся открыть страницу
..........
http://www.domen352.com/forums/member.php?u=476926 Cсылка http://myDomenLink.ru не найдена или не доступна к индексации.

Теперь поясню что где )
Первой идет ссылка на страницу профиля, после двоеточия идет анкор Вашей ссылки (если он зеленый:это анкор ссылки, если черный:это ALT изображения на которое повешена ваша ссылка, красным отмеченны пустые анкоры-empty), Ok-обозначает что ссылка доступна для индексирования. Если на странице несколько ссылок (Home page и в подписи) скрипт их найдет не беспокойтесь, причем те что доступны для индексирования будут выше горизонтальной черты (<hr>).
По анкору можно судить для чего можно использовать данный ресурс (вам решать), например профиль со ссылкой на ваш ресурс с анкором "Home Page"-если вы собираетесь продвигать свой ресурс по таком запросу то профиль ну очень полезный, я использую такие профиля для поднятия траста других профилей.

Страницы которые не отвечали или ссылка на которых недоступна для индексации выводятся после горизонтальной черты (<hr>).
Критерии по которым проверяются ссылки на индексируемость можно узнать на сайте автора класса который я использовал http://kurilka.co.ua/archives/script-check-backlinks/

Можно легко допилить скрипт и выводить данные не на экран, а в файл формируя готовые ссылки на страницу профилей с необходимым анкором (например используя анкор ссылки в профиле и рэндомные приставки), что добавит веса в глазах поисковиков странице профиля где находится ваша ссылка (полезно для тех кто делает доры на профилях), это значительно лучше чем прогонять по форумам профили с околотематичным анкором...

Будем надеяться, что этот полезный функционал когда-нибудь будет реализован в самом сабмитере.
Извиняюсь за тофтологию и ошибки в тексте (профиля-профиля), но как смог - так и выразил свои мысли.
Всем удачи.
Sliper
 
Сообщений: 35
Зарегистрирован: 21 ноя 2011, 14:23

Re: Полезный скрипт

Сообщение dsunegin 26 сен 2012, 09:59

Пожелания на будущее: Этот бы функционал скрипта в сам Xseon встроить!
Не хочется самому писать отдельный софт для проверки ссылок в профилях.
dsunegin
 
Сообщений: 3
Зарегистрирован: 27 июл 2012, 15:51

След.

Вернуться в Полезные источники информации

Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 2

cron