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

Итак сам код это набор CURL параметров.

<?php
$url = 'https://api.vk.com/method/account.setOnline?access_token=ВАШ_ТОКЕН';

$path = 'Папка_где_будут_куки_и_логи_полный_путь';
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_HEADER, 1);
curl_setopt($ch, CURLOPT_VERBOSE, 1);
curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/4.0 (Windows; U; Windows NT 5.0; En; rv:1.8.0.2) Gecko/20070306 Firefox/1.0.0.4");
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 10);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_COOKIEJAR, $path.'/cookie.txt');
curl_setopt($ch, CURLOPT_COOKIEFILE, $path.'/cookie.txt');
$log = curl_exec($ch);
curl_close($ch);

$handle = fopen($path . "/log.txt", "w+"); //Создаем файл для логов
fwrite($handle, $log); // Запись в файл
fclose($handle); //Закрытие файла

?>

Как узнать свой auth_key? Здесь в браузере

По логам смотрим ответ сервера. Если response:1, то все впорядке. Но может выдать капчу.

Пример:

{"error":{"error_code":14,"error_msg":"Captcha needed","request_params":[{"key":"oauth","value":"1"},{"key":"method","value":"captcha.force"},{"key":"uids","value":"66748"},{"key":"access_token","value":"b9b5151856dcc745d785a6b604295d30888a827a37763198888d8b7f5271a4d8a049fefbaeed791b2882"}],"captcha_sid":"239633676097","captcha_img":"http:\/\/api.vk.com\/captcha.php?sid=239633676097&s=1"}}

В таком случае запоминаем два параметра: captcha_sid и captcha_img. И переходим по ссылке «captcha_img»:»http:\/\/api.vk.com\/captcha.php?sid=239633676097&s=1″. Там видим капчу и записываем результат, после отправляем в наш скрипт, добавив после curl_setopt($ch, CURLOPT_COOKIEFILE, $path.’/cookie.txt’); еще параметр

<? curl_setopt($curl, CURLOPT_POSTFIELDS, "captcha_sid=239633676097&captcha_key=ТЕКСТ-С-КАРТИНКИ");

Если после выполнения скрипта в логах видим снова response:1 значит все заработало и удаляем вышеуказанную строку.

Если Вам нужно два и более аккаунта, то просто добавляем после $log = curl_exec($ch);.

<? curl_setopt($ch, CURLOPT_URL, 'http://localhost/upload.php'); $log = curl_exec($ch);

Чтобы скрипт работал, нужно поставить CRON на запуск каждые 4 минуты, потому что установка онлайн статуса делается на 5 минут. Пример КРОНа выглядит так:

*/4 * * * * /usr/bin/php5 /Путь/к/вашему/скрипту.php

Пример высылать не буду. Все скопируете. Нужен ли Вам здесь автоматизированный скрипт, где вы будете добавлять/удалть аккаунты?

Update: 09.02.2017

Update: 23.08.2017 — срок онлайна ВК стал 5 минут.

Плагин рейтинга создан автором этого блога. Буду очень признателен, если вы сможете его поддержать (ссылка)

p.s. Если статья была полезной и вас переполняет чувство благодарности, можете поддержать меня долларом на патреоне

Об авторе

Web Developer. I have expirience in FrontEnd, Backend, Devops. PHP, Python, Javascript (Vue.js, React.js)

Смотреть посты