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/
Можно легко допилить скрипт и выводить данные не на экран, а в файл формируя готовые ссылки на страницу профилей с необходимым анкором (например используя анкор ссылки в профиле и рэндомные приставки), что добавит веса в глазах поисковиков странице профиля где находится ваша ссылка (полезно для тех кто делает доры на профилях), это значительно лучше чем прогонять по форумам профили с околотематичным анкором...
Будем надеяться, что этот полезный функционал когда-нибудь будет реализован в самом сабмитере.
Извиняюсь за тофтологию и ошибки в тексте (профиля-профиля), но как смог - так и выразил свои мысли.
Всем удачи.