Security News
38% of CISOs Fear They’re Not Moving Fast Enough on AI
CISOs are racing to adopt AI for cybersecurity, but hurdles in budgets and governance may leave some falling behind in the fight against cyber threats.
A bot that watches users stories on behalf of your VKontakte account (sqlite mode)
Бот, который смотрит истории ВКонтакте
Бот предоставляет JavaScript API для работы с ним
Если вы не в теме, то поясню, зачем все это нужно.
Когда-то давно, в 2018 году буквально через 3 дня после моего др, я написал статью на Пикабу о том, как воспользовался идеей маркетологов для наращивания статистики посещения страницы ВКонтакте. Метод заключаетя в том, что вы создаете бота, который будет самостоятельно просматривать истории пользователей ВКонтакте, а они в свою очередь будут от интереса "who are you, man?" посещать вашу страницу.
Тогда у меня получились неплохие цифры по посещаемости, охват вырос с 50 посещений до 28 тысяч. Вы можете почитать как это было в этой статье (https://pikabu.ru/story/o_tom_kak_ya_ispolzoval_prosmotryi_storis_dlya_piara_v_vk_6123084)
Бот из статьи уже давно не работает и его поддержка не осуществляется, но тем не менее, сейчас вы находитесь на странице практически того же самого бота, но во много раз улучшенного и продуманного. Это API - это версия для разработчиков, которым хочется поэкспериментировать с данным функционалом. Он более стабильный, постоянно поддерживается и обновляется. Работает на sqlite3, в отличие от прошлой версии (MySQL, Mongo DB), а также оптимизирован под лимиты ВКонтакте так, чтобы не возникало неожиданных сбоев и проблем.
Софт полностью бесплатный, поэтому вы можете его использовать не покупая никаких дополнений и обновлений. Если вам нужна настройка, найдите фрилансера, который это сможет сделать, а я этим не занимаюсь. (Это не значит, что бот не обновляется, напротив, обновления выходят по мере поступления новых проблем и запросов от разработчиков)
const { Bot, Viewer, Collector} = require('storybot')
let BotController = new Bot({
database: {
filename: __dirname + '/storybot.sqlite'
}
})
let KirillViewer = new Viewer({
account: {
username: 'ИМЯ_ПОЛЬЗОВАТЕЛЯ_ВК',
password: 'ПАРОЛЬ_ВК'
}
})
let KirillCollector = new Collector({
tokens: ['токен_пользователя_1', ...['токен_пользователя_n']]
})
BotController.addBot({
viewers: [KirillViewer],
collector: KirillCollector,
groupIds: [1,2],
name: 'Bot1'
})
BotController.startBots().then(() => {
console.log('Все боты запущены')
})
Collector - это один или несколько аккаунтов, которые будут собирать список доступных историй у участников групп, которые указаны в настройках бота или коллектора
Так как storybot написан с помощью EasyVK, то он работает по его правилам (сохранение сессий, загрузка по ним занова)
В боте коллектор может быть только 1. Но аккаунто в нем может быть минимум 1 и максимум - количество доступных для вас разных токенов пользователей. Для того, чтобы коллектор запустился и работал, ему необходимо дать второй дополнительный токен со второго аккаунта! Это важно, потому что иначе вы будете упираться в лимиты и скорость коллектора будет значительно ниже, чем могла бы быть.
Токены коллектора используются в максимальном режиме. Это значит, что чем больше токенов - тем быстрее коллектор собирает истории пользователей.
Токены коллектора могут быть только токены, которые имеют доступ к следующим методам API ВКонтакте: stories.get, groups.getMembers, execute. Рекомендуется использовать только токены пользователя с максимальными правами доступа. На токенах групп бот не тестировался. Но по докам ВК, группы могут иметь доступ к методу stories.get
const { Collector } = require('storybot')
let myCollector = new Collector({
fileIds: [__dirname + '/groups.data'],
tokens: ['USER_TOKEN'], // НЕ МОЖЕТ БЫТЬ ПУСТЫМ
target: {
sex: 1,
users: [1,2,3,4],
files: [__dirname + '/users.ids']
}
})
Настройки Collector'а
179963918
57846937
29534144
tokens: ['token1', 'token2', 'token3', ...['tokenN']]
easyvk
new Collector({
easyvkParams: {
proxy: 'http://user:password@server:port'
}
})
Или без пароля и логина (для socks тоже можно использовать логин и пароль)
new Collector({
easyvkParams: {
proxy: 'socks5://150.129.54.111:6667'
}
})
Viewer - это тот, кто просматривает истории. Виюверов может быть подключено сразу много, а также, их можно настроить по правилам авторизации easyvk (указать прокси, user-agent и другие параметры)
const { Viewer } = require('storybot')
let Liza = new Viewer({
account: {
username: 'liza-iza@gmailinbox.com',
password: 'AzaRaLize45067!'
},
reauth: false,
proxy: 'socks5://150.129.54.111:6667',
userAgent: 'MOT-V360v/08.B7.58R MIB/2.2.1 Profile/MIDP-2.0 Configuration/CLDC-1.1',
captchaKey: 'key',
captchaSid: 34040402,
limitStoriesForUser: 1,
startFromEnd: false
});
Настройка Viwer'а
limitStoriesForUser
историй)Bot - это контроллер всего: виюверов и коллектора
Его настройки тоже возможны. В нем же настраивается список идентификаторов групп. Сам объект Bot
- это не бот. Это комната для ботов, в которой они работают под руководством начальника (Bot'а)
Поэтому в одном файле можно запустить сразу несколько ботов, это не проблема. У каждого бота должно быть уникальное имя, чтобы в базе данных было легко его найти и использовать снова. Имя бота рекомендуется писать на латинице, чтобы избежать лишних ошибок и багов.
const { Bot } = require('storybot')
let botController = new Bot({
command: (controller, id, command, data) => {
console.log(controller, id, command, data)
},
log: (...args) => {
console.log(...args)
},
database: {
filename: __dirname + '/storybot.sqlite'
}
})
// Список групп
let groups = [];
// Добавляем бота
botController.addBot({
viewers: [...[Liza]], // Обратите, пожалуйста, внимание на код из предыдущих частей документации
colletor: myCollector,
groupIds: [1, 2, 3, 4, ...[groups]],
name: 'Bot1' // Уникальное имя бота (придумайте сами)
})
// Запускаем ботов
botController.startBots().then(() => {
console.log('Все боты запущены!')
})
Настройка Bot'а
command: (from, id, command, ...data) => {
// from - название инициализатора команды (viewer,collector)
// id - ID инициализатора (для виювера ID аккаунта, а для коллектора - 0)
// command - текстовое обозначение команды
// data[] - данные, которые пришли вместе с командой
}
console.log()
бота. Может помочь, чтобы вести логи программы отдельноsqlite
, вы можете использовать настройки из модуля sqlite3, опираясь на рекомендации модуля knexnew Bot({
database: {
filename: __dirname + '/storybot.sqlite'
}
})
Метод отсанавливает работу всех ботов
Для того, чтобы получить именно тот токен, который 100% подойдет для работы коллекторов, необходимо использовать данные для атворизации официальных клиентов. Сделать такое через стандартную oAuth авторизацию не получится, потому что oAuth никогда не дает действительно полный доступ даже к тому, к чему были выданы разрешения. Для получения максимального доступа необходимо использовать клиентскую атворизацию через официальные приложения. Поэтому это не так уж и просто)
Но в storybot я сделал этот момент упрощенным. Теперь можно легко получить подобный токен, воспользовавшись утилитами бота.
Эта утилита получает токен. Автоматически запрашивает ручной ввод в консоли капчи, если она возникает, а также код для двухфакторной аутентификации, если он необходим. В конце ничего не возвращает, работает только с output
, выводит токен в окно консоли и в указанный файл
const {
Utils
} = require('storybot');
async function main () {
return Utils.getToken('liza-iza@gmailinbox.com', 'AzaRaLize45067!', 'C:/Users/.token')
}
main();
Версия без вывода в консоль
const {
Utils
} = require('storybot');
async function main () {
return Utils.getToken('liza-iza@gmailinbox.com', 'AzaRaLize45067!', 'C:/Users/.token', false)
.then(token => console.log(token));
}
main();
Для того, чтобы бот работал, вам больше не нужно скачивать Mongo DB :) ! По всем вопросам работы софта, обащайтесь в личку https://vk.com/kinock. Постараюсь помочь в настройке
Желаю вам успехов.
FAQs
A bot that watches users stories on behalf of your VKontakte account (sqlite mode)
We found that storybot demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
CISOs are racing to adopt AI for cybersecurity, but hurdles in budgets and governance may leave some falling behind in the fight against cyber threats.
Research
Security News
Socket researchers uncovered a backdoored typosquat of BoltDB in the Go ecosystem, exploiting Go Module Proxy caching to persist undetected for years.
Security News
Company News
Socket is joining TC54 to help develop standards for software supply chain security, contributing to the evolution of SBOMs, CycloneDX, and Package URL specifications.