Все началось с того, что супруга завела аккаунт в Инстаграме, начала постить кучу фоток и обижаться, если я вовремя их не лайкую. Пришлось заняться автоматизацией семейных отношений.

Заказчик в моем лице определил следующие требования:
1. Симуляция работы в Инстаграме как обычный пользователь, лайкание в одном треде (чтобы Instagram не забанил моего бота).
2. Возможность авто-лайкания произвольного количества аккаунтов с произвольной глубиной лайков.
3. Запуск через шедулер, работа в бэкграунде.

Выбор пал на nodejs. Почему nodejs? Потому на Perl'е (который я использую время от времени уже несколько лет) делать не хотелось, а nodejs привлек внятным менеджеров пакетов, нативной поддержкой JSON и вообще Javascript в браузере роднее чем какой-нибудь Python.



Конечно, Instagram имеет свое API и теоретически его можно было использовать, но программы, использующие API Instagram'a требуют специального аппрувола, а мне хотелось чтобы скрипт могли использовать массово.

Полный текст скрипта доступен на github.com/get-a-clue/nodejs

Для симуляции браузера конечно используется selenium, в оригинальной версии скрипта запускается браузер Chrome для отладки, если вы хотите использовать скрипт только в консоли, нужно заменить chrome на phantomjs в строке 24. Phantomjs — это бразузер на Webkit со всеми плюшками типа CSS, JS и т.д.

Установка и запуск описана в комментарии к скрипту. Кроме того, вам потребуется самостоятельно установить сам nodejs и настроить периодический запуск скрипта по расписанию. Конечно, скрипт еще далек от совершенства, нужно сделать отчетность и обработку ошибок, но свою функцию он успешно выполняет, экономит мне время да и жена теперь довольна. :)

Комментарии (32)


  1. Mendel
    27.01.2016 00:20
    +7

    Код не смотрел — не надо оно мне, но за «автоматизацию семейных отношений» спасибо!
    До чего дошел прогресс)))


    1. TimsTims
      27.01.2016 09:52
      +1

      Главное не перестараться с автоматизацией :)


  1. gbg
    27.01.2016 01:00
    +14

    Скоро в вашей семейной жизни:
    image


  1. rhamdeew
    27.01.2016 01:10
    +2

    Когда открывал пост думал будет про использование API Instagram. А там как известно сейчас довольно серьезные ограничения с недавних пор и надо аппрува ждать.
    Сильно удивился когда неделю назад написал мне чел который пытался развернуть мой открытый проект (https://github.com/rhamdeew/InStat) для инста, а в итоге столкнулся с тем что API теперь даже фоточки не отдает без аппрува.


    1. kAIST
      27.01.2016 14:53

      а в итоге столкнулся с тем что API теперь даже фоточки не отдает без аппрува.

      Как это не отдает? Прям сейчас сижу отлаживаю скрипт, который по тегу отлавливает публикации с данными пользователей и отправляет на печать. Все работает прекрасно со стандартным API без апрува.


      1. BoDVa
        27.01.2016 14:58

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


        1. kAIST
          27.01.2016 14:59

          Спасибо за информацию. Надо поберечь старые аккаунты )


        1. kAIST
          27.01.2016 15:18

          Ох нет, до июня только старые приложения будут работать ((


      1. rhamdeew
        27.01.2016 15:36

        Ну да, чуть ниже уже отписали. Возвращает грустное «The access_token provided is invalid»


        1. kAIST
          27.01.2016 15:42

          Что то совсем грустно. С такими правилами апрува, получить на мелкий проект его вряд ли будет возможно (мне всего то нужно печатать фотографии по хэштегу).
          В принципе если для одного себя получать access_token, то песочница должна подойти. Правда не могу разобрать с ограничениями.


          1. BoDVa
            27.01.2016 22:14

            Там урезано количество запросов, но опять же если только для себя, то текущих должно быть достаточно. Ну и самое дурацкое ограничение, по пользователям, ты можешь получить только 20 последних фото, и только тех пользователей которым прислал инвайт в приложение и они подтвердили


            1. kAIST
              27.01.2016 22:18

              Для моих целей немного песочина не подойдет. Мне нужно собирать фотографии по хэштегу. В песочнице я могу только со своего аккаунта их собирать, либо тех кто по инвайту.
              Пока для себя сделал парсилку www.instagram.com/explore/tags/TAG_NAME оно без авторизации работает, посмотрим что будет дальше )


              1. rhamdeew
                28.01.2016 23:39

                А мне тут приложение не зааппрувили =) До июля точно будет работать, потом фиг знает.
                Тоже фотки по хэштегу получаю — instaulsk.ru

                Отправил на повторную модерацию, может одумаются. Саппорта в инста как такового вообще нет. Такое ощущение что все на автомате работает пока не поломалось. Даже в android-приложении полно багов которые никто фиксить не может и позорное отсутствие приложения для Ipad Mini Retina


  1. hmpd
    27.01.2016 01:42
    +2

    Отличная идея, сразу захотелось воспользоваться, но… а что если жена спросит про какую-то конкретную фотку, а вы ее даже не видели?


    1. Stan_1
      27.01.2016 08:09
      +2

      Это ладно. А если жены всех программистов увидят эту статью и бросятся пытать своих — какие фотки «из вчерашних» ему особо понравились? :)


  1. Maccimo
    27.01.2016 01:52
    +2

    Написать приблуду, делающую постинг кучи фоток занятием трудноосуществимым и вообще морально изматывающим было бы продуктивнее.
    Внезапные обрывы связи, Error 500, Connection timeout, login failed через раз, вот это всё.


  1. k3NGuru
    27.01.2016 05:51
    +1

    А жена хабр не читает? Вдруг увидит, что муж выкрутился и автоматизировал отношения?


  1. fryday
    27.01.2016 08:56
    +11

    Вангую скандал из за лайкнутой фотографии сломанного ногтя\каблука. Так что прикручивайте распознование образов)


  1. tumikosha
    27.01.2016 09:33
    +1

    Написал аналогичный лайкер для фейсбука на java+selenium. Назвал кукушкой



  1. KIVagant
    27.01.2016 10:45

    Не читал, но лайкаю.


  1. a11aud
    27.01.2016 11:34

    Вот из-за таких постов я и перестал читать хабр


  1. andreymironov
    27.01.2016 12:30
    +5

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


    1. musuk
      27.01.2016 16:23
      +4

      image


  1. Sultry
    27.01.2016 13:12
    +8

    Интересные у вас жены, товарищ:

    ...
    "instagram_accounts_to_be_liked": ["xenia_sobchak", "volochkova_art"]
    ...
    


  1. linux5
    27.01.2016 13:16
    +6

    Зачем это все? ну ей богу… если просто потренироваться что-то пописать/поизучать, то конечно ОК, но как какое то решение это порождает кучу ненужных постов на FB, Инстаграме и прочем… Люди начинают думать, что они действительно постят что-то важное и кому то интересное, вместо этого, на мой взгляд, проще поговорить с человеком или написать комент, что все подряд выкладывать не надо… Если жена обмжается, то автоматизация точно уж не метод — гораздо лучше, опять же на мой взгляд, поговорить с ней… иначе, в конечном итоге, это приведет к еще большим проблемам… А уж если у вас будет баг и вы, вдруг, залайкаете не то, так вообще может быть скандал :)

    сугубо ИМХО


    1. rhamdeew
      28.01.2016 23:41

      Ну если мы не будет постить «не нужно», то другие будут постить свое «не нужно». СММщики еще и не так накручивают рекламные посты.


  1. questor
    27.01.2016 13:43
    +5

    Напомнило: bash.im/quote/436725

    xxx: У нас тут YYY (билд инженера) сманили. Чел принципиально жил только в консоли и vim, диаграммы рисовал скриптами в dot, доки писал в wiki маркдауном, если что-либо требовало больше чем 1.5 минуты писал скрипт. Сидим разбираем его наследие.
    xxx: Из прекрасного
    xxx: smack-my-bitch-up.sh — шлет видимо его жене «Задержался на работе» и генерит отмазки из списка. Поставлено в cron, стреляет после 9 вечера если на рабочей станции висят интерактивные сессии по ssh с его логином.
    xxx: kumar-mudak.sh — сканит почту, ищет письма от Кумара (заграничный ДБА с говорящей фамилией) с ключевыми словами (sorry, help и т.д.) откатывает упомянутую базу стейджинга на последний бэкап и отписывается типа не вопрос будь аккуратнее в следующий раз. Зело заколебал его Кумар вестимо.
    xxx: badun.sh — поставлен на cron на определенные даты, шлет письма «плохо себя чувствую, поработаю из дома» опять же если к 8-45 утра не обнаружилось интерактивных сессий на рабочей станции.
    xxx: И наконец первый приз: coffe-blyat.sh — ждет 17 сек (!!!) логинится по ssh в кофе-машину (епрст, мы и понятия не имели что она в сетке да и еще что на ней sshd поднят) и засылает туда какую-то абракадабру. Экспериментальным путем выяснили что ЭТО запускает процесс варения half-caf chai latte среднего размера, которое начинает выливаться в чашку как раз к тому моменту когда неспеша идущий человек добирается от его офиса до автомата.


  1. akalend
    27.01.2016 14:24
    +3

    Если бы я делал такой скрипт, то использовал бы только phantomjs и запускал код по крону,
    нода вообще тут не нужна, и селениум тоже.


  1. BoDVa
    27.01.2016 15:02

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


    1. el777
      27.01.2016 15:32
      +1

      так все равно — тыкать-то надо )


      1. BoDVa
        27.01.2016 22:15

        ну да, зато мельком хотя бы увидишь фото, и сможешь выкрутиться, если спросит про содержание фотографий