Постер в соц закладки

Рубрика: Новости -> Скрипты -> php
Пятница, 18 сентября 2009 г.
Просмотров: 12173
Подписаться на комментарии по RSS

Все знают, что социальные закладки превратились в линкопомойки, уже

написано более десятка автоматических постеров, которые засирают базу

соц. закладок ссылками на ГС и ГБ. Напишем и мы еще один ;)

Цель: Используя функции библиотеки CURL
сделать искусственный HTTP POST запрос, авторизироваться, сохранить
соц. закладку, и в целом показать как обычно делаются автоматические
постеры.

bobrДа,

у бобрдобра есть API для постинга закладок, но я усложню себе задачу, и

с имитирую заход из браузера, введу программно логин и пароль, заполню

поля для сохранения закладки.

Сперва нужно посмотреть, как соц. закладка добавляется вручную, и

проследить за этим процессом Http сниффером (я использую плагин для

FIrefox - HttpFox), а затем воспроизвести программно.

1. Набираем в браузере адрес http://bobrdobr.ru/

2. Вводим логин и пароль, смотрим сниффер. Видим главное:

  1. Отправлять POST запрос нужно на адрес http://bobrdobr.ru/login/
  2. POST данные выглядят следующим образом:
  3. username=%ЛОГИН%&password=%ПАРОЛЬ%&remember_user=on&next=%2F
  4. При успешном входе сервис пересылает нас ч-з 302-редиррект на главную страницу.

login3. Кликаем по ссылке “Добавить закладку”, получаем диалог, в котором вводим все данные и жмем “Сохранить”.

post

Аналогично как и во втором пункте я с помощью сниффера получаю следующую информацию:

  1. Отправка POST данных идет на ссылку: http://bobrdobr.ru/new_bookmark.html
  2. Программисты ДоброгоБобра посчитали что смогут спастись от спамеров
  3. тем, что будут автоматически генерировать некий код… но не

    предусмотрели, что его можно выпарсить из html кода. Имеем ввиду вот

    эту строчку, ее нужно считать:

    <<span class="start-tag">input</span><span class="attribute-name"> type</span>=<span class="attribute-value">"hidden" </span><span class="attribute-name">name</span>=<span class="attribute-value">"killspammers" </span><span class="attribute-name">value</span>=<span class="attribute-value">"055C5507560701013A040C0557"</span><span class="error"><span class="attribute-name">/</span></span>>
  4. Ну и напоследок POST данные имеют следующий вид:
  5. killspammers=530154500556000F6F52550000&url=%ССЫЛКА%&name=%ЗАГОЛОВОК%&tags=%ТЕГИ%&description=%ОПИСАНИЕ%&add_bookmark_submit=Сохранить

Теперь, когда механизм сохранения закладки для меня ясен, я начинаю программировать.

Каждую строчку я прокомментировал, надеюсь понятно. Вбивайте свои логины и пароли на БобрДобр и пробуйте, все работает.

<?php
    // Ваши логин и пароль в бобрдобр
    $login = 'ваш логин';
    $pass = 'ваш пароль';
    // Данные для постинга
    $url = "http://www.google.com/";
    $name = "Это гугл, чтобы не забыть!";
    $tags = "Поисковая система, Супер-пупер";
    $content = "Это содержимое";
    // Создаем подключение
    if( $curl = curl_init() ){
        // Нужно загрузить главную страницу бобра
        curl_setopt($curl,CURLOPT_URL,'http://bobrdobr.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,'Бобр - дурак');
        // Если все ок, в $html вернется html код главной страницы
        if( $html = curl_exec($curl) ){
            // Указываем куда отправлять запрос
            curl_setopt($curl,CURLOPT_URL,'http://bobrdobr.ru/login/');
            // Указываем подключению, что слать нужно не GET (по умолчанию), а POST запросы
            curl_setopt($curl,CURLOPT_POST,TRUE);
            // Указываем, что именно отправлять в POST данных, на этой стадии происходит ввод логина/пароля
            curl_setopt($curl,CURLOPT_POSTFIELDS,"username=$login&password=$pass&remember_user=on&next=%2F");
            // Если все ок, в $html вернется html код главной страницы
            if( $html = curl_exec($curl) ){
                // Парсим этот сложнейший код, который защищает Доброго Бобра от спама!
                if( preg_match('/\<input type=\"hidden\" name=\"killspammers\" value=\"(.+?)\"\/\>/', $html, $out) ){
                    // Отправляем СПАМ!
                    // Указываем куда отправлять запрос
                    curl_setopt($curl,CURLOPT_URL,'http://bobrdobr.ru/new_bookmark.html');
                    // Указываем, что именно отправлять в POST данных, на этой стадии происходит ввод логина/пароля
                    curl_setopt($curl,CURLOPT_POSTFIELDS,"killspammers=$out[1]&url=$url&name=$name&tags=$tags&description=$content&add_bookmark_submit=%D0%A1%D0%BE%D1%85%D1%80%D0%B0%D0%BD%D0%B8%D1%82%D1%8C");
                    if( $html = curl_exec($curl) ){
                        echo 'Постинг выполнен!';
                    }
                }
            }
        }                                    
        // Закрываем подключение, очищаем память
        curl_close($curl);
    }
?>

Вот и все. Надеюсь было интересно. Мне всегда хотелось создать свой постер в соц закладки, но подумав, я купил готовый bposter . Думаю у них аналогично постинг и реализован. Источник

twitter.com facebook.com vkontakte.ru odnoklassniki.ru mail.ru ya.ru rutvit.ru myspace.com technorati.com digg.com friendfeed.com pikabu.ru blogger.com liveinternet.ru livejournal.ru memori.ru google.com bobrdobr.ru mister-wong.ru yahoo.com yandex.ru del.icio.us

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

  1. Спасибо за инфу, попробую сделать на другие сервисы.

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

grin LOL cheese smile wink smirk rolleyes confused surprised big surprise tongue laugh tongue rolleye tongue wink raspberry blank stare long face ohh grrr gulp oh oh downer red face sick shut eye hmmm mad angry zipper kiss shock cool smile cool smirk cool grin cool hmm cool mad cool cheese vampire snake excaim question

Используйте нормальные имена. Ваш комментарий будет опубликован после проверки.

(войти без комментирования)

Имя и сайт используются только при регистрации

Если указать email (зарегистрироваться), то будет уведомление о новых комментариях.

Выберите человечка с поднятой рукой!