Архив Январь, 2010

Автопостер memori.ru

Author admin    Category PHP     Tags

Не для кого не секрет, что сейчас с помощью социальных закладок, можно немножко поднять трафик своему сайтику. А трафик – это, пусть маленькая, но все же денюжка)))

Самборский Евгений писал в своем блоге, как можно написать автопостер в Bobrdobr. ru (тоже очень популярный сервис социальных закладок). Сегодня мы будем писать автопостер в memori.ru

Итак, вначале заходим на memori . ru . Регистрируемся. Затем, нам нужно отсниферить все POST запросы при авторизации, я пользуюсь десктопной программой CommView. Запускаем программу и авторизируемся.. В логах снифер, видим следующее:

POST /login/ HTTP/1.1

User-Agent: Opera/9.80 (Windows NT 5.2; U;  ru ) Presto/2.2.15 Version/10.01

Host:  memori . ru 

Accept: text/html, application/xml;q=0.9, application/xhtml+xml, image/png, image/jpeg, image/gif, image/x-xbitmap, */*;q=0.1

Accept-Language:  ru-RU , ru;q=0.9,en;q=0.8

Accept-Charset: iso-8859-1, utf-8, utf-16, *;q=0.1

Accept-Encoding: deflate, gzip, x-gzip, identity, *;q=0

Referer: http:// memori . ru /

Cookie: blogShow6988=3; sort=date; mlpopunder=; MEMORISESSID=4234a312b18596c0f266c4d2d88a4123; toolbarOffer=10

Cookie2: $Version=1

Connection: Keep-Alive, TE

TE: deflate, gzip, chunked, identity, trailers

Content-Length: 31

Content-Type: application/x-www-form-urlencoded

login=(логин)&password=(пароль)&membermy=on

HTTP/1.1 302 Found

Server: nginx/0.7.62

Date: Tue, 08 Dec 2009 08:31:58 GMT

Content-Type: text/html; charset=windows-1251

Connection: keep-alive

Server: nginx/0.7.62

Date: Tue, 08 Dec 2009 08:31:59 GMT

Content-Type: text/html; charset=windows-1251

Transfer-Encoding: chunked

Connection: keep-alive

X-Powered-By: PHP/5.2.8

Expires: Thu, 19 Nov 1981 08:52:00 GMT

Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0

Pragma: no-cache

Content-Encoding: gzip

Видно, что при авторизации, на адрес http:// memori.ru /login/ отправляется POST запрос

login=(логин)&password=(пароль)&membermy=on

После успешной авторизации, через 302 редирект, мы перенаправляемся на главную страницу.

Следующая наша задача. Нужно отсниферить POST запрос, при добавлении закладки. Но все уже сделано за вас))

POST /linkaddaction/ HTTP/1.1
User-Agent: Opera/9.80 (Windows NT 5.2; U;  ru ) Presto/2.2.15 Version/10.01
Host:  memori . ru
Accept: text/html, application/xml;q=0.9, application/xhtml+xml, image/png, image/jpeg, image/gif, image/x-xbitmap, */*;q=0.1
Accept-Language:  ru-RU , ru;q=0.9,en;q=0.8
Accept-Charset: iso-8859-1, utf-8, utf-16, *;q=0.1
Accept-Encoding: deflate, gzip, x-gzip, identity, *;q=0
Referer: http:// memori . ru /linkadd/
Cookie: blogShow6988=3;
MEMORISESSID=648c85a9f932983aad6aa52ffd2c63ee;
 login=Zircool; password_hash={длинное значение}; sort=date; toolbarOffer=17
Cookie2: $Version=1
Connection: Keep-Alive, TE
TE: deflate, gzip, chunked, identity, trailers
Content-Length: 324
Content-Type: application/x-www-form-urlencoded

book=&urlRedirect=&url=http%3A%2F%2Fwww.zircool. ru %2F&title=%C1%EB%EE%E3+%CD%EE%E2%EE%F0%EE%F1%F1%E8%E9%F1%EA%EE%E3%EE+%E1%EE%EC%E6%E0&description=%D1%EA%F0%EE%EC%ED%FB%E9+%E1%EB%EE%E3+%CD%EE%E2%EE%F0%EE%F1%F1%E8%F1%EA%EE%E3%EE+%C1%EE%EC%E6%E0.&hdescr=&tags=%E1%EE%EC%E6%2C%E1%EB%EE%E3%2Cseo&mark=&showOnMain=on&token=53ebeb

Итак, для того что бы добавить закладку, нам необходимо отправить POST запрос на адрес http:// memori.ru/linkaddaction/

Конструкторы memori . ru не спят ночами и каждый раз что-то новенькое придумывают. Обратите внимание на конец пост запроса, а именно на параметр

&token=53ebeb

Это секретный код, который генерируется автоматически, нужен он для защиты от спамеров. Его без труда, с помощью регулярки, можно вытащить из исходного кода страницы.

Теперь когда мы разобрали механизм работы, авторизации и добавления закладки, можно писать скрипт.

// Ваши логин и пароль  в   memori
    $login = 'login';
    $pass = 'qwerty';

    // Данные для постинга
    $url = 'http://www.zircool. ru /';
    $name = 'Блог Новороссийского бомжа';
    $tags = 'бомж,блог,seo';
    $content = 'Блог Новороссиийского SEO бомжа';

    // Создаем подключение
    if( $curl = curl_init() ){

        // Нужно загрузить главную страницу  memori
        curl_setopt($curl,CURLOPT_URL,'http:// memori . ru /');

        // Нужно помнить кукисы!
        curl_setopt($curl, CURLOPT_COOKIESESSION, TRUE);
        curl_setopt($curl, CURLOPT_COOKIEFILE, 'cookiefile');

        // Скачанный код возвращаем в переменную а не в поток
        curl_setopt($curl,CURLOPT_RETURNTRANSFER,true);

        // "Следовать туда, куда зовут". Если сервис выдает 302 код, мы следуем по этой ссылке
        curl_setopt($curl,CURLOPT_FOLLOWLOCATION,true);

        // Таймаут, если сервис не отвечает больше 30 секунд, выходим
        curl_setopt($curl,CURLOPT_CONNECTTIMEOUT,30);

        // Активируем GZIP сжатие трафика
        curl_setopt($curl,CURLOPT_ENCODING,'gzip,deflate');

        // Соврем Бобру, напишем в юзер-агент неправду
        curl_setopt($curl,CURLOPT_USERAGENT,'IE7');

        // Если все ок, в $html вернется html код главной страницы
        if( $html = curl_exec($curl) ){

            // Указываем куда отправлять запрос
            curl_setopt($curl,CURLOPT_URL,'http:// memori . ru /login/');

            // Указываем подключению, что слать нужно не GET (по умолчанию), а POST запросы
            curl_setopt($curl,CURLOPT_POST,TRUE);

            // Указываем, что именно отправлять в POST данных, на этой стадии происходит ввод логина/пароля
            curl_setopt($curl,CURLOPT_POSTFIELDS,'login='.$login.'&password='.$pass.'&membermy=on');

            // Если все ок, в $html вернется html код главной страницы
            if($html = curl_exec($curl) ){

                 // Указываем куда отправлять запрос
                 curl_setopt($curl,CURLOPT_URL,'http:// memori . ru /linkadd/');

                 if($html = curl_exec($curl) ){

                // Парсим этот сложнейший код, который защищает  от спама!

                if( preg_match('/<input type="hidden" name="token" value="(.+?)" />/', $html, $out) ){

                    // Указываем куда отправлять запрос
                    curl_setopt($curl,CURLOPT_URL,'http:// memori . ru /linkaddaction/');

                    // Указываем, что именно отправлять в POST данных, на этой стадии происходит ввод логина/пароля
                    curl_setopt($curl,CURLOPT_POSTFIELDS,'book=&urlRedirect=&url='.$url.'&title='.$name.'&description='.$content.'&hdescr=&tags='.$tags.'&mark=&showOnMain=on&token='.$out[1]);

                    if( $html = curl_exec($curl) ){

                        echo 'Постинг выполнен!';
                    }
                }

             }
            }
        }

        // Закрываем подключение, очищаем память
        curl_close($curl);
    }

Вот и все! Автопостер написан… Тестировал его на денвере, все корректно работает. Скрипт работает на curl`ах, так что для работы скрипта, хостинг должен поддерживать CURL. Желаю удачи!

Постовой: В последнее время все чаще смотрю фильмы онлайн.