Доброго времени сутко уважаемые читатели блога wooden-stool.ru.
Многие блоггеры написав и опубликовав запись на своём ресурсе, как можно скорей пытаются добавить её в индекс — начинают добавлять анонсы записей в социальные закладки, в различные сообщества определённой тематики, простовляют лайки делают ретвиты и прочее. Ну и конечно же после всей этой проделанной работы ваша страница не только успешно попадёт в индекс поисковых систем (о том как ускорить индексацию сайта я уже писал) но и вы получаете тематический траффик.
Скрипт на PHP + cURL — пример автопостинга записей сайта, блога в социальные сети и сообщества.
Собственно я вроде бы ничем не хуже остальных и делаю то же самое. Конечно можно установить себе на сайт различные плагины которые позволяют быстро ретвитнуть и лайкнуть определённую запись, но это не моё. К слову говоря посетив Блог Ягнёнка можно узнать как именно установить подобные плагины для отоброжения социальных закладок, а так же и про другие модули и фишки с джумлой. Но, как я уже писал выше в ручную например мне это порядком поднадоело делать и я стал думать как это дело можно автоматизировать, конечно существует множество различных онлайн сервисов и программного обеспечения для подобных целей. Но тут есть один минус- эти сервисы как правило заточены под определённые ресурсы, что не есть гуд если нужно постить в какие-то определённые сообщества и т.п. В данной заметке пойдёт речь именно о том, как самому написать скрипт автопостинга, который мы может крутить и докручивать как нам только заблагоразумиться.
Разделим статью на на 2 этапа:
- Анализ выбранного ресурса под постинг.
- Пример скрипта автопостинга на php + curl
Теперь перейдём к рассмотрению каждого из этих пунктов.
Анализ выбранного ресурса под постинг
Это пожалуй самый сложный пункт, конечно- если вы уже знакомы со сниффером (а его мы сейчас и будем рассматривать), то данный этап не займёт у вас много времени.
Для того что бы отследить какими данными обменивается ваш браузер (да и не только он) с веб-ресурсами я использую HTTP сниффер IEInspector HTTP Analyzer. Эти данные нам потребуются для нашего скрипта, а именно нам необходимо узнать в качестве каких параметров передаётся логин, пароль, текст анонса и прочее — что потребуется для автоматической авторизации скриптом и публикации записи. IEInspector HTTP Analyzer для этих целей очень даже подходит, он прост в обращении и не требует от вас каких-то убер знаний, всё достаточно просто- он показывает http заголовки, передаваемые данные методами GET, POST, ответ полученный от сервера, чистые — так называемые «сырые данные» (заголовок + все данные, куки..etc). В общем для нас этого больше чем достаточно. перейдём непосредственно к изучению социального сообщества. Я выбрал сервис spooo.ru, который позволяет опубликовать ваш анонс с открытой для поисковиков ссылкой на оригинал.
Собственно запускаем сниффер, заходим на spooo.ru (уккаунт у вас предварительно уже должен иметься на этом сервисе). Далее переходим опять в сниффер и кликаем на кнопочку «Start» что рядом с зелёной стрелочкой в тулбаре. То есть, сниффер начал работать и отслеживать все запросы, которые идут по сети. Теперь нам остаётся только зайти на выбранный нами ресурс и попробовать авторизоваться. То есть вводим свои данные логин / пароль, жмём кнопочку «Войти» и смотрим в сниффер
Как мы можем наблюдать передаются 3 параметра POST методом, а именно параметр:
- login — ваш логин в системе.
- password — ваш пароль от аккаунта.
- url — хз зачем нужен этот параметр, возможно для редиректа или ещё чего..его мы просто игнорируем в общем.
Так, для первого запроса данные у нас есть. Теперь перейдём ко второму, основному запросу- собственно запрос который опубликует нашу запись. Опять включаем сниффер (а вы разве не нажали на стоп? в противном случае логи засруться всякой ерундой), переходим сюда » http://spooo.ru/blogs/add/ «, и заполняем все поля которые необходимы для того что бы опубликовать вашу запись в своём блоге. Нажимаем на «Создать» и бежим смотреть логи в сниффере.
Собственно как мы видим данные опять передаются методом POST, в принципе и так всё думаю понятно и всё же:
- data[new][blog_id] — айди блога (его мы будем выдирать регуляркой).
- data[new][title] — Заголовок записи.
- data[new][text] — Тело записи.
- data[new][tags] — Теги.
Думаю всё понятно. На этом этапе, пожалуй, закончим разбираться с данными которые необходимо отправлять на сервер.
Пример скрипта автопостинга на php + curl
Теперь перейдём к написанию скрипта на php для постинга, который будет отправлять аналогичные запросы с помощью cURL. Я не буду лить воду- просто объясню что мы будем делать и предоставлю код.
Всего нам потребуется сделать 3 запроса, 1 методом GET и 2 POST. 1 запрос это авторизация, 2 запрос будет гет, нужен он для получения cookie или, какой идентификационной фишки — я не разбирался, но без этого запроса работать не будет. Ну и 3 запрос, запрос который передаёт данные необходимые для размещения, айди блога, тайтл, текст и теги.
Теперь собственно сам скрипт:
<?PHP $login = "Username"; // здесь ваш логин на spoov.ru, существующий естественно. $password = "123456"; // пароль от аккаунта // Инициализируем CURL $ch = curl_init(); //Формируем POST данные $postdata = 'login='.$login.'&password='.$password.'&url='; $uagent = "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322)"; // 2. указываем параметры, включая url curl_setopt($ch, CURLOPT_URL, "http://spooo.ru/users/login"); curl_setopt($ch, CURLOPT_HEADER, 0); curl_setopt($ch, CURLOPT_POST, 1); curl_setopt($ch, CURLOPT_POSTFIELDS, $postdata); curl_setopt($ch, CURLOPT_USERAGENT, $uagent); curl_setopt($ch, CURLOPT_TIMEOUT, 20); curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 20); curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); curl_setopt($ch, CURLOPT_COOKIEFILE, "cookie.txt"); curl_setopt($ch, CURLOPT_COOKIEJAR, "cookie.txt"); // Отпровляем запрос и получаем страницу curl_exec($ch); //-------------------------------------------------------------------------------------------- // Отпровляем гет запрос и получаем сессию curl_setopt($ch, CURLOPT_URL, 'http://spooo.ru/blogs/add/'); curl_setopt($ch, CURLOPT_HEADER, false); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 30); curl_setopt($ch, CURLOPT_USERAGENT, 'PHP Bot (http://spooo.ru)'); curl_setopt($ch, CURLOPT_COOKIEFILE, "cookie.txt"); //Из какого файла читать curl_setopt($ch, CURLOPT_COOKIEJAR, "cookie.txt"); //В какой файл записывать $data = curl_exec($ch); // вырезаем ID первого нашего блога, в который будем размещать preg_match('#<option value=\"(.*?)\">#si',$data,$match); // $match[1]; - тут наш айди блога //-------------------------------------------------------------------------------------------- // Формируем 2й POST запрос, который отсылает данные для публикации записи $postdata = "data[new][blog_id]=".$match[1]."&data[new][title]=ZAGALOVOK&data[new][text]=TEKSTOVOE SOOBSHEBIE&data[new][tags]=TEG1, TEG2"; $uagent = "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322)"; // 2. указываем параметры, включая url curl_setopt($ch, CURLOPT_URL, "http://spooo.ru/blogs/add/save"); curl_setopt($ch, CURLOPT_HEADER, 0); curl_setopt($ch, CURLOPT_POSTFIELDS, $postdata); curl_setopt($ch, CURLOPT_USERAGENT, $uagent); curl_setopt($ch, CURLOPT_TIMEOUT, 20); curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 20); curl_setopt($ch, CURLOPT_HEADER, 0); curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); // curl_setopt($ch, CURLOPT_COOKIEFILE, "cookie.txt"); curl_setopt($ch, CURLOPT_COOKIEJAR, "cookie.txt"); curl_exec($ch); curl_close($ch); ?>
То есть всё достаточно просто. Если будут вопросы то задавайте, с удовольствием отвечу.
На этом, пожалуй, всё удачи.
Неплохо, а у вас есть готовые скрипты? давно хотел занятся написанием скрипта для автоматического постинга но руки всё не доходят
-
Stealer Говорит:
16.07.2012 at 2:05 пп
Я тоже присоединяюсь к вопросу.
И спасибо за статью!
-
gloys Говорит:
17.07.2012 at 8:29 дп
Примеры готовых скриптов я размещал уже давно, тут посмотрите http://wooden-stool.ru/avtoposting-v-vk-com-livejournal-com-i-yandeks-lentu
-
Stealer Говорит:
21.08.2012 at 1:34 пп
Спасибо что ткнули ссылкой! Пойду ковырять скрипт.
Безспорно, очень много готовых расширений создано для исполнения функции постинга в созсети и прочие сообщества. Но имея собственное решения проще настроить так как нужно индивидуально. Или же дописать то, чего не хватает.
Первые два пункта понятны!, А не могли бы вы поподробнее рассказать про гет запрос: как вы определили что он нужен? и для чего он нужен и почему именно гетом вы посылаете а не постом?
-
gloys Говорит:
18.05.2012 at 6:17 пп
Дело в том что на подобных сервисах стоят что-то типа «заглушек» и т.п фишек от таких умников как мы. Да и в целом гет запрос нужен для того что-бы обновить куки..или ещё зачем, догадок много, я не разбирался с этим сервисом- но факт есть факт, без гета работать не будет. Определить можно чисто интуитивно — вы же когда размещаете запись то, кликаете сначала на ссылку типа «добавить запись» и уже потом начинаете вводить необходимые данные (текст, тайтл, ссылку и др), посему и наш скрипт должен сделать что-то подобное. Это мы иделаем, гет запросом на http://spooo.ru/blogs/add/
я хочу создать автопостинг для http://www.montreal.kijiji.ca , ваш метод подойдёт?
-
gloys Говорит:
04.11.2012 at 10:05 пп
Подойдёт для любого веб-ресурса, везде всё одно и то же по сути, главное иметь немного извилин
Какая прелесть- попробую ваш скриптик и отпишусь…что и как
А можешь мне написать скрипт который отправляет заметки на сайте одноклассники?
Пожалуйста, я уже пол года ищу как это сделать