четверг, 27 августа 2009 г.

Cкрипт для искусственного увеличения посещаемости

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

Итак что нам понадобится для того чтобы скрипт ожил:


1) Нам нужен браузер, я настоятельно советую пользоваться elinks, т.к. это один из немногих текстовых веб-браузеров, который способен исполнять js. Во-первых, текстовый это удобно, не нужен GUI для запуска(можно запускать на сервере), а для чего нам нужен js? Очень много счётчиков использующих js.
2) Понадобится wget, для получения настроек.
3) Понадобится программка notify-send, для красивового вывода сообщений.

Алгоритм будет следущий
1. заходим на сайт и получаем файл с заданием(под заданием я имею ввиду набор веб-сайтов/ip-адресов по которому нужно пройтись)
2. разбираем файл, в нём каждая строка это ссылка на сайт.
3. заходим на нужный сайт
4. замираем на некоторое время, чтобы страничка подгрузилась
5. завершаем начатый процесс
6. идём на 3-ий пункт и делаем тоже самое для следующего сайта и так пока не пройдём весь список.

Для того чтобы elinks работал как надо, нам надо убедиться что он собран с поддержкой JS. Выполняем:
elinks -version

Ищем в полученной информации ECMAScript или Scripting (ECMAScript scripting engine), если у Вас это есть то всё отлично, если же нет (у меня в Ubuntu 9.04 не было) тогда скачиваете последнюю версию elinks ставите библиотеку
apt-get install libmozjs-dev 

(она снесёт firefox-3.5, если он стоит, но т.к. эта библиотека нужна только для того, чтобы собрать elinks, её можно будет в конце удалить и вернуть Ваш любимый FireFox-3.5 на место).

После того как собрали elinks, убедимся что у нас работает notify-send.
notify-send temp

Если написано что такой команды нет, то поставьте пакет libnotify-bin(так notify-send называется в Ubuntu).

Переходим к скрипту:
#!/bin/bash
#Настройки:
#Включить/выключить оповещения
NOTIFY="true"
#Браузер, через который будем просматривать странички
BROWSER="elinks"
#Иконки, которые будут использоваться для оповещния
ICON="-i /usr/share/icons/gnome/32x32/emblems/emblem-web.png"
ICON_ERROR="-i /usr/share/icons/gnome/32x32/emblems/emblem-important.png"
ICON_PROGRESS="-i /usr/share/icons/gnome/32x32/emblems/emblem-urgent.png"
ICON_DONE="-i /usr/share/icons/gnome/32x32/emblems/emblem-default.png"
#Время для загрузки и нахождения на страничке
#(если у Вас медленный интернет, увеличьте до требуемого времени)
sleeptime=15
#Путь до файла с заданием
FILEHOST="http://www.nol1ght.ru/"
#Название файла с заданием
FILE="websites.txt"

#Удаляем файл с заданием, если он есть
rm $FILE

#Получаем файл с заданием
wget $FILEHOST$FILE

#Проверряем наличие файла и его читаемость
if [ ! -f $FILE ]; then
if( "$NOTIFY" = "true" );then
DISPLAY=:0.0 notify-send $ICON_ERROR "nol1ght's GoToTheLink" "ERROR: $FILE does not exists"
fi
exit 1
elif [ ! -r $FILE ]; then
if( "$NOTIFY" = "true" ); then
DISPLAY=:0.0 notify-send $ICON_ERROR "nol1ght's GoToTheLink" "ERROR: can not read $FILE"
fi
exit 2
fi

#Создаём массив в который поместим линки из нашего задания
LINKSARRAY[0]=""
#Создаём счётчик
COUNTER=0 
#Начинаем построчное чтение файла
while read line
do
#Записываем строки в массив
LINKSARRAY[$COUNTER]=$line 
#Увеличивае счётчик на 1 
COUNTER=$(expr $COUNTER + 1) 
done < $FILE

#Записываем кол-во заданий
len=$(expr $COUNTER - 1 )

#Выводим приветсвенное сообщение о скрипте
if( "$NOTIFY" = "true" ); then
DISPLAY=:0.0 notify-send $ICON "nol1ght's GoToTheLink" "nol1ght's visits script 'gotothelink' 0.1 is working with parametrs: Browser=$BROWSER  Sleeptime=$sleeptime Websites=${#LINKSARRAY[*]}"
fi

#Сбрасываем счётчик 
COUNTER=1
#Начинаем читать массив
for website in ${LINKSARRAY[*]}
do
#Заходим браузером на нужный сайт
$BROWSER $website&
#Запоминаем номер процесса
pid=$!
#Ждём заданное выше время
sleep $sleeptime
#Завершаем процесс
kill -TERM $pid
#Выводим сообщение о проделанной работе
if( "$NOTIFY" = "true" ); then
#Вычисляем процент пройденных сайтов
let math=($COUNTER*100)/${#LINKSARRAY[*]}
#Увеличиваем счётчик пройденных сайтов
COUNTER=$(expr $COUNTER + 1) 
#Оповещаем пользователя
DISPLAY=:0.0 notify-send $ICON_PROGRESS "nol1ght's GoToTheLink" "DONE: $math %"
fi
done

#Выводим сообщение об успешном завершении работы
if( "$NOTIFY" = "true" ); then
DISPLAY=:0.0 notify-send $ICON_DONE "GoToTheLink" "The program is done, it has visited "${#LINKSARRAY[*]}" websites.";
fi
#Удаляем полученный файл с заданием
rm $FILE
Добавим скприпт в крон, открываем кронтаб:
crontab -e
и вписываем строчку: 40 * * * * /home/nol1ght/gotothelink Теперь, каждые 40 минут, скрипт будет посещать выбранные нами сайты. Вот собстенно и всё... Надеюсь он будет кому-то полезен/интересен.

source:
gotothelink
websites.txt

Комментариев нет:

Отправить комментарий