Black Seo Way
Black Seo Way
Тёмная сторона оптимизации

Фильтруются ли доры за редирект?

21 Сентябрь 2011

Обосрали меня в комментах к прошлому посту, типа по поводу сео ничего не пишу :) . Так вот, пока мысли есть, пишу.

Бытует мнение, что редирект на доры нельзя ставить – типа гугл такой умный, всё спалит и выкинет из выдачи.

И да, и нет. Редирект палиться всегда, но фильтр за него вы в одном случае словите, в другом нет. Всё целиком и полностью зависит от трафа – например если на сайте (доре) трафа копейки, ну скажем уников 10 в сутки – гуглу будет без разницы на то, что происходит на сайте. Траф возрастает – прибавляются и требования к нему. На одной тематике, при отметке в 300-400 уников в сутки уже накладывается фильтр. Ну количество уников до фильтра для каждой тематики отдельное, так что не стоит воспринимать эту цифру в серьёз.

Вот только что посмотрел стату, один сайт порезало вполовину. Трафа на нем было четырёхзначное число, поставил небольшой код, который манипулировал трафиком – словил фильтр. Теперь хуй знает как восстанавливать траф.

Еще один пример приведу. Раньше доры под рунет делал с кнопкой «Вход», но когда узнал, сколько трафа теряется из за этого, охуел (посмотрите сами, если интересно). На новые экспериментальные доры поставил редирект. Думал, что моя жадность погубит доры, но тут я увидел обратное.

Вот к примеру пачка на фрихостах. Доры дохленькие, но суть в другом

То есть живут спокойно уже месяц. Таких пачек с редиректом несколько и никто не планирует умирать.

Ну, думаю, суть понятна. Делаете много доров – редирект приветствуется. Если берёте качеством, от него лучше отказаться.

Весёлые комменты приветствуются :)

Примеры практического применения cURL в PHP

20 Сентябрь 2011

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

Поехали, функция – применение

1. Получение страницы (аналог file_get_contents).

function davai_url($url) {
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL,$url);
    $res=curl_exec($ch);
    return $res;
    curl_close($ch);
}

echo davai_url('http://orskp.ru/');

2. Передача cookie

function davai_url_cookie($url,$cookname,$cookvalue) {
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL,$url);
    curl_setopt($ch, CURLOPT_COOKIE,"$cookname=$cookvalue");
    $res=curl_exec($ch);
    return $res;
    curl_close($ch);
}

echo davai_url_cookie('http://orskp.ru/','admin','password')

3. Работа через прокси

function davai_url_proxy($url,$proxy) {
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL,$url);
    curl_setopt($ch, CURLOPT_PROXY, "$proxy");
    $res=curl_exec($ch);
    return $res;
    curl_close($ch);
}

echo davai_url_proxy('http://orskp.ru','255.255.255.255:8080')

4. Работа через соксы (5)

function davai_url_socks($url,$socks) {
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL,$url);
    curl_setopt($ch,CURLOPT_PROXYTYPE,CURLPROXY_SOCKS5);
    curl_setopt($ch, CURLOPT_PROXY, "$socks");
    $res=curl_exec($ch);
    return $res;
    curl_close($ch);
}

echo davai_url_socks('http://orskp.ru','255.255.255.255:8080')

5. Проверка доступности сайта

function check_200($url) {
    $ch = curl_init();
    curl_setopt($ch,CURLOPT_URL,$url);
    curl_setopt($ch,CURLOPT_NOBODY,true);
    curl_setopt($ch,CURLOPT_HEADER,true);
    $out=curl_exec($ch);
    curl_close($ch);
    if (strstr($out,'200 OK')) return true; else return false;
}

// Применение
if(check_200('http://orskp.ru/')) echo "Доступен"; else echo "Не доступен";

Ну вот, в принципе и всё, что нужно :)
Для базовых знаний – самое то.

Dash Berlin – Till The Sky Falls Down

Немного про Google Panda и архивы блога

13 Сентябрь 2011

Что-то давно не писал ничего. Пока появилось желание, выделил 15 минут. Итак, кратко, несколько слов по каждой теме.

***********

Панда Google. Писал я топик, где обещал помочь с пандой в рунете. Всего откликнулось около 10 человек со своими сайтами, у многих, как ни странно, варезники. Про них (варезники) я хотел еще в том посте сказать, что с ними работать практически бесполезно. Объясняю еще раз. Сам фильтр Падла Панда направлен в большей степени на контент. По этому менять шаблонные фразы, делать перелинковки, спамить ссылки и прочее не всегда является главным способом выхода из под фильтра. Нужно работать с контентом.

Копипаст, который находится на 99% варезах, в принципе имеет шансы на жизнь, но его нужно правильно преподать. Так же хотел бы отметить количество основного контента. Если сама статья состоит их картинки, 3 предложений и шаблонных данных (Язык, Размер, Таблетка и ид), и таких статей большое количество – сайт рано или поздно попадёт под фильтр.

То есть если у вашего сайта есть проблемы с текстом, начните решать прежде всего их. И только потом занимайтесь ссылочным и внутренним SEO.

Статью я как начал писать, так и забыл про неё :) Если время будет – допишу более подробно про алгоритм

***********

Немного про старые архивы блога. По счетчику лиру видно, что больше всего посещаются страницы статей про кликкешмани, факи и прочее, что находится справа. Меня напрягают 2 вещи

1) Статьи на самом деле уже устарели. Вернее многие факты в них потеряли актуальность и многие читают и задают вопросы в аську, на которые я даже хз как ответить.
2) После переезда на новый хостинг встала проблема с картинками. Т.к. их названия были написаны по русски, и вордпресс как то переформатировал их, то на новом сервере он отказывается их читать. Короче картинок почти нет. Перезаливать и переименовывать очень долго и лень, да и исходя из 1 пункта не вижу смысла.

Отсюда у меня два вывода. Первый – удалить архивы блога, реально в них уже ничего полезного не осталось. Второй – написать что то новое.

Остановлюсь на втором. Есть ли смысл писать новые мануалы? С одной стороны да, а с другой – нет. Да – потому, что кому то это будет полезно, а нет потому, что отдачи, кроме новых конкурентов не будет. Да и взаимно палить темы никто сейчас не будет :) Ясен хуй.

Если раньше всё было намного интереснее и хорошие статьи были поводом обсуждения, люди стучались, даже палили свои наработки, я свои взаимно палил, кто то даже деньги скидывал за статьи пару раз :) а сейчас кроме палева никому ничего не нужно, даже думать многие не хотят и придумывать что то своё. Либо я стал по другому смотреть на эти вещи, либо обленились люди конкретно.

Просто иногда такие тупые вопросы задают, я охуеваю, вплоть до того, в какую папку заливать дорген и сколько доров в сутки надо делать. Вот так.

Ладно, что то я разошелся :) Если есть что посоветовать – пишите в комменты.
Так же набросайте темы, по которым интересует инфа (по дорам и гуглу вцелом).

Вот музыка хорошая
Dash Berlin ft. Jonathan Mendelsohn – Better Half Of Me

Лучший способ сделать бэкап БД без потерь

6 Сентябрь 2011

В общем вчера нужно было перенести сеть своих сайтов на другой сервер, а так как все из них работают на базе MySQL, то и бекапить нужно было оттуда, прежде всего. Начал я как обычно, через обычный экспорт таблиц и данных в  PhpMyAdmin. Не знаю, то ли руки кривые у меня, то ли что то еще, но практически всегда все попытки сделать экспорт-импорт в него заканчивались неудачно.. То блять файл экспорта получается 300 МБ, в то время как максимально допустимый для заливки – 8 МБ, то ошибки синтаксиса, то просто хуй знает почему не получается.

В общем начал гуглить способы работы с дампами баз данных и почти сразу наткнулся на Sypex Dumper. Быстро поставил, разобрался и был очень счастлив удачному бекапу и заливке дампа. :)

Вот так выглядит окно экспорта

Так – окно импорта

В общем приятный скрипт, сделанный на AJAX, что делает его еще более удобным.

Небольшой мануал по работе с ним.

  1. Скачиваем актуальную версию. Я скачал Sypex Dumper 2.0.8, в принципе не стал парится с PRO версией и лайтом. Всё равно этот релиз бесплатный, так что не проблема и его поюзать.
  2. Далее заливаем на хостинг. Сначала на тот, откуда вы будете бэкапить базу данных. Просто находим домен на том сервере, где лежит mysql, заливаем в папку (mysite.com/sxd/) и ставим права
    chmod 777 для каталога backup
    chmod 777 для файлов cfg.php и ses.php
  3. Далее идем по адресу скрипта (mysite.com/sxd/) и указываем логин и пароль именно от базы данных. По желанию, можно указать хост и порт.
  4. В случае удачного логина, на вкладке Экспорта выбираем нужные поля и делаем собственно сам экспорт:
  5. Экспортировали? Ок, скачивайте дамп.
  6. Далее устанавливайте скрипт на тот сервер, куда хотите залить дамп. Всё аналогично.
  7. Теперь но новом сервере заходим через FTP в папку со скриптом и заливаем полученный дамп (п. 5) вот сюда
    Залили, теперь обновляем страницу скрипта (на новом сервере) и переходим во вкладку Импорт.
  8. Далее просто выбирайте дамп и скилкайте на Выполнить.
  9. Радуйтесь успешному заливу дампа и сохраненным нервным клеткам :)

Ну вот и всё.

Более удобного способа работы с MySQL я еще не встречал, по этому и советую вам этот вариант. :) Если есть что посоветовать – велкам в комменты.

Определение уникальности посетителя средствами Cookie и JavaScript

29 Август 2011

Продолжая свои эксперименты с трафом и поведенческими факторами, решил я сделать следующую вещь:

Заходя на сайт (дорвей, в моём случае) юзер видит баннер, который перекрывает всю страницу. Нажимает на «закрыть», баннер закрывается, ставится кука, пользователь больше не видит его в течении месяца и спокойно путешествует по дору, кликает на страницы, редиректа на платник пока не происходит.

Итак, решение вопроса:

1) Сперва устанавливаем функции, которые будут использоваться. Это установка куки, чтение куки, проверка уникальности

<script language="JavaScript" type="text/javascript">

// Установка куки (Имя, значение, Возраст, дальше хуйня)
function setCookie(name, value, expires, path, domain, secure) {
    if (!name || !value) return false;
    var str = name + '=' + encodeURIComponent(value);
    if (expires) str += '; expires=' + expires.toGMTString();
    if (path)    str += '; path=' + path;
    if (domain)  str += '; domain=' + domain;
    if (secure)  str += '; secure';
    document.cookie = str;
    return true;
    }

// Получение куки по её имени
function getCookie(name) {
    var pattern = "(?:; )?" + name + "=([^;]*);?";
    var regexp  = new RegExp(pattern);
    if (regexp.test(document.cookie))
    return decodeURIComponent(RegExp["$1"]);
    return false;
    }

// Функция закрытия баннера
function closebanner(){document.getElementById('ID блока').style.display = 'none';}

// Провяем, есть ли кука. Если нет - показываем блок и ставим куку
var vodka = getCookie('имя куки');
if (!vodka) {
    var d = new Date();
    d.setMonth(d.getMonth() + 1); // 1 месяц ставим
    setCookie('имя куки', 'from+russia+with+love', d); // Привет Амерам ;)
    document.getElementById('ID блока').style.display = 'block';
    }

</script>

Все вроде понятно. Данные не забываем менять на свои. Едем дальше.

2) Сам код в HTML

<style type="text/css">
/* Фиксируем блок в верхнему краю 100%-100% */
#ID блока{text-align:center;position:fixed;top:0px;left:0px;width:100%;height:100;}
/* для удобства подвинул вниз баннер */
#ID блока img {margin-top:100px;border:0px;}
</style>

<div id="ID блока" style="display:none;"><a href="javascript:close();"><img src="http://banner-url.com"></a></div>

Изначально ставим display:none. Объясню для чего это. К примеру если юзер будет повторно заходить на сайт, либо просто будет кликать по ссылкам и бегать по ним, окно будет появляться и сразу же исчезать. Ну такое лучше не допускать.

Далее, самое главное, на чём я сегодня потерял 2 с лишним часа. Не забывайте, что браузер обрабатывает код по мере его считывания. По этому порядок должен быть такой, сначала вывод блока (то есть пункта номер 2), а затем обработка и проверка кук на JS (это первый пункт). Я про это забыл и долго думал, почему же не получается, как надо. А так как изначально блок с рекламой будет невидимым, то боятся его появления не нужно. Оно вылезет, если куки не будет. Вот так.

Ну в принципе вот и всё, чем хотел поделиться. Вам решать, для чего это всё может пригодится :) Если будете экспериментировать, советую совместить эту систему с счётчиком кликов, про который я уже писал.

Счётчик кликов на AJAX + PHP

26 Август 2011

В общем понадобилось мне сделать такую штуку – повесить на доры баннер и определить его CTR. Т.к. количество уников я уже знал, ибо стоял piwik, мне нужно было определить, сколько кликают на баннер. Это можно было легко определить, после клика на баннер будет идти переход на страницу, где тоже стоит счетчик, но у меня была немного другая задача – перехода не должно было быть.

То есть все должно было быть на JS + запись кол-ва кликов на определенный блок

<div class="banner"></div>

Решение начал реализовывать на AJAX, потому что ничего умнее мне в голову не пришло. Итак, собственно само решение:

Создаём отдельный JS либо вставляем в HTML следующий код

<script type="text/javascript">
function doclick() {
    var http_request = false;
    if (window.XMLHttpRequest) { // Mozilla, Safari, ...
    http_request = new XMLHttpRequest();
    if (http_request.overrideMimeType) {
        http_request.overrideMimeType('text/xml');}
    }

    else if (window.ActiveXObject) { // IE
    try {http_request = new ActiveXObject("Msxml2.XMLHTTP");}
    catch (e) {
        try {http_request = new ActiveXObject("Microsoft.XMLHTTP");}
        catch (e) {}
        }
    }

    if (!http_request) {return false;}
    http_request.onreadystatechange = function() { alertContents(http_request); };
    http_request.open('GET', 'http://your-domain/click.php?go=yes', true);
    http_request.send();

    function alertContents(http_request) {
        if (http_request.readyState == 4) {
            if (http_request.status == 200) {
    document.GetElementById('flag').innerHTML = "<b>Done!</b>";
            }
        }
    }
}
</script>

Суть проста – создается функция doclick(), при вызове которой идет запрос на страницу http://your-domain/click.php?go=yes. В случае удачного ответа устанавливается определенное значение для блока с id=»flag». Ну это по желанию. Если не нужно узнавать ответа запроса, просто удалите функцию alertContents().

Далее, создаём простейший обработчик на PHP. Ничего сложного, код в пару строк

<?php
if ($_GET['go']=='yes'){
   $file = fopen('clicks.txt','a+');
   fwrite($file,$_SERVER['REMOTE_ADDR']." - ".date("H:i:s")."\n");
   fclose($file);
}
?>

Всё. На папку, где находится файл clicks.txt ставим права 777 и радуемся – каждый клик по баннеру будет записываться в этот файлик в формате:

74.120.13.132 – 06:50:47
75.66.200.239 – 06:51:01
75.66.200.239 – 06:51:04
50.14.224.29 – 07:33:21
50.14.224.29 – 07:33:24
74.177.171.179 – 07:37:36

Этого вполне хватит, чтобы палить клики, и, главное, без перехода на страницу. Всё происходит в фоновом режиме. Но всё таки советую поставить какое то событие, после клика. Иначе если юзер кликнет и ничего не произойдет – он подумает, что не правильно кликнул или что то не работает и будет кликать повторно. Я вообще сделал так:

    function alertContents(http_request) {
        if (http_request.readyState == 4) {
            if (http_request.status == 200) {
    alert('Hello!');
            }
        }
    }

Ну и всё. Юзер кликнул, увидел сообщение, закрыл и пошел дальше.

Теперь самое решение на html:

<a href="#click" onclick="doclick()"><img src="button.png" /></a>
[...]
<div id="flag"></div>

Итог: юзер кликает на картинку button.png, совершается событие onclick, вызывающее функцию doclick(), та в свою очередь вызывает файл на сервере, он записываетв файл IP и дату клика, возвращает http 200и функция устанавливает флаг (либо выходит алерт). Во так :)

Ну и в догонку, как просчитать CTR, если кто то тоже захочет поэкспериментировать – Кол-во показов / Кол-во кликов * 100%. Показы берём из счетчика, клики – колво строк в нашем файле. Узнать частотность кликов можно, поделив 100 на полученный CTR.

Ну все это сделано для анализа каких то экспериментов.
Возможно кому то помог :)

Помогу усмирить Панду Google (пока только RU)

22 Август 2011

Недавно панда пришла в рунет. Ну вообще то это не новость (пруф).

Дело в том, что когда я начал работу с дорами под англогугл, через месяц начала орудовать панда, ну пока её настраивали, тестировали и проверяли, результаты работы с ней были нестабильны – вылетали сайты буквально рандомно. Сетки по 10 сайтов бывало вылетали полностью, либо вообще без изменений.

Сейчас более-менее ситуация в англогугле прояснилась – проделано много экспериментов, результаты которых дали много инфы о работе алгоритма. Теперь самое время направить знания в рунет.

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

Кстати, еще начал писать большую статью о панде и её алгоритме, дня 3 и будет готово.

По сабжу – пишите на yaaushbka@gmail.com, придумаем что-нибудь

Контакты


8c44ba01

  • ICQ: 485191792
  • Skype: msp-yarik
  • Mail: yaaushbka@gmail.com
  • Лента в твиттере
  • Блоги, которые я читаю

    • Блог WiseCoder'а
    • Блог Altair-Z
    • Блог Хероманта
    • Teimos
    • DimaX
    • Rushter
    • Блог Илюхи
    • Maiami
    • Спрут в Тае
    • Капитан Арбайтен! :D

    Прочее



    Копиврайт © 2009 .. 2010 .. 2011
    Black Seo Way orskp.ru. Lets go!