Программа для Вконтакта (что-то вроде браузера, заточенного под ВК)

Иван9 лет в сервисе
Данные заказчика будут вам доступны после подачи заявки
08.11.2016

"VK CRUSHER" (ну или можете придумать своё название)

Я постараюсь сразу всё перечислить и учесть, чтобы свести к минимуму всякие доработки.

Программа задумывается, как панацея от всех моих бед с ВК. Аналогичная прога, в которой меня смущают некоторые нюансы (поэтому я её так и не купил) — стоит 40 долларов. Было бы очень круто, если бы Вы согласились примерно на эту же сумму. Но я готов обсудить Ваше встречное предложение, прога мне действительно нужна и цена подлежит обсуждению.

ОПИСАНИЕ алгоритма работы (как это понимаю я):

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

Для этого, конечно же, надо будет входить в аккаунт через логин + пароль + прокси сервер (прикси будут либо с привязкой по айпи, либо через ip_adress:port:password).

Я могу Вам дать аккаунт для тестов (уже настроенный Firefox Portable сразу вместе с прокси и сохранёнными cookies) - на нём уже есть куча друзей, можно потренироваться в плане определения того, какие запросы идут при выставлении критериев на приглашения в группу, например. Ну или для других тестов проги. Могу дать и логин + пароль + прокси, чтобы через прогу заходить и тестировать. В общем, с этим без проблем.

Единственный момент насчёт проги: я не знаю, нужно ли её маскирвоать под каким-то User Agent'ом. Есть ли в этом смысл. То есть, чтобы ВК видел, как будто пользователь из под браузера работает...

Где-то видел такой выход из положения: в одной проге были варианты, какой Агент использовать для каждого акка, например Chrome, Firefox, IE, Opera и т. д.. Винда, я думаю, не вызовет подозрений, если везде 7-ка будет. Это ВК тоже вроде бы видит.

Итак...

ОСНОВНЫЕ ФУНКЦИИ (ВИДЫ ЗАДАНИЙ):

1) Приглашение в друзья (количество приглашений/запросов нужно иметь возможность регулировать - сколько их будет в задании; сейчас для ВК - максимум 50 добавлений друзей в сутки, но они это изменить могут, поэтому есть смысл указывать это вручную):

а) по списку ИД (единственное, что надо потестить с оригинальными именами страниц, типа https://vk.com/sociohacker)

- тут сразу такой момент - этот список может быть большим, например, 10 000 человек. Надо решить, как его загружать: сразу в прогу или чтобы она считывала из файла .txt, например.

- и второй момент: чтобы прога шла по списку последовательно, то есть не приглашала повторно людей

- чтобы прога не "Подписывалась" на аккаунты; есть просто два варианта "Подписаться" и "Добавить в друзья" - так вот подписываться не нужно.

б) по критериям из поиска (возраст, город, пол и т. д.). Например, вставляем в прогу ссылку типа:

https://vk.com/search?c[age_from]=21&c[age_to]=35&c[city]=314&c[country]=2&c[name]=1&c[online]=1&c[photo]=1&c[section]=people&c[sex]=1&c[sort]=1&c[status]=6

ну и она по этим результатам уже приглашает

в) приглашать в друзья из конкретной группы (по её ИД) по критериям (Страна, Город, Пол, Возраст и т. д. - там все критерии видны по ссылке).

Ссылка для примера (в самой ссылке, как видно, уже прописаны все критерии):

https://vk.com/search?c%5Bage_from%5D=17&c%5Bage_to%5D=36&c%5Bcountry%5D=2&c%5Bgroup%5D=107943155&c%5Bname%5D=1&c%5Bphoto%5D=1&c%5Bsection%5D=people&c%5Bsex%5D=1

г) есть такая фишка в ВК - "Возможные друзья" - это друзья друзей и те, с которыми была переписка когда-либо. Они, как я подозреваю, с большей вероятностью соглашаются на предложение, поэтому было бы круто ввести и эту фишку.

Ссылка на возможных друзей имеет такой формат:

https://vk.com/friends?act=find

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

2) Приглашения в группу (по номеру группы, параметр group_id)

ВАЖНО: количество приглашений/запросов нужно иметь возможность регулировать - сколько их будет в задании; сейчас для ВК - максимум 40 приглашений в группу в сутки, но они это изменить могут, поэтому есть смысл указывать это вручную.

а) приглашать друзей по критериям (возраст, пол, город) - тут нюанс в том, что прямой ссылки нет. То есть, при выставлении критериев сама ссылка не меняется. Как мне товарищ объяснил, когда я выбираю какой-то критерий на странице, то на сервер отправляется запрос, а потом приходит ответ в виде отфильтрованного списка друзей.

Ссылка на страницу вот:

https://vk.com/friends?act=invite&group_id=107943155

где "107943155" - цифровой идентификатор группы, он есть у каждой, его мы и будем в прогу вставлять

Критерии скрываются за кнопкой "Параметры" - справа от поля ввода имени для поиска.

Конечно же, критерии иногда выставлять не нужно, тогда это надо учесть в проге (мол, если не заданы критерии - приглашаем всех подряд).

б) возможность в первую очередь приглашать друзей "Онлайн" - это как бы тоже критерий, но он прописывается в ссылке, вот:

https://vk.com/friends?act=invite&group_id=107943155§ion=online

То есть, надо как то прописать, что если есть друзья онлайн - сначала их зовём в группу, а если они уже закончились - то зовём и тех, кто офлайн.

в) по списку ИД людей, если они есть в друзьях (если их нет, то и пригласить не получится, функционал ВК только так работает)

Такая штука нужна для того, если я, например, получил список людей из похожей по тематике группы, пригласил их в друзья, но точно не знаю, кто из них принял приглашение (и, следовательно, кого можно пригласить уже в мою группу), а кто еще не принял или отказался (и кого я пригласить не могу).

То есть, прога просто проверяет список ИД на присутствие их в друзьях, а затем приглашает в группу.

Ну или просто приглашает всех подряд, а считает только положительные ответы сервера, игнорируя ошибки доступа (когда кто-то не в друзьях, а ты его в группу зовёшь).

3) Рассылка одинаковых сообщений определённым пользователям (т. е. в прогу вбиваем текст сообщения и указываем кому слать):

а) по списку ИД (сейчас ВК разрешает только 20 сообщений в сутки тем, кто не в друзьях). Можно указать настройку - количество отправлений, а то вдруг ВК что-то поменяет.

б) друзьям по критериям. Весь список друзей доступен по ссылке: https://vk.com/friends?section=all

а по критериям - опять же, фильтры выставляются после клика по кнопке "Параметры". Так что там надо какие-то запросы посылать, чтобы получить отфильтрованный список.

НЮАНС: при попытке приглашения иногда приходит ответ "Пользователь запретил приглашать себя в группы" - надо это как-то мониторить, чтобы прога считала именно успешные ответы. То есть, есть разница между "отправить 40 запросов на приглашения людей в группу" и "выслать 40 приглашений в группу, чтобы они дошли до адресата". Тут если я непонятно написал - скажите, я подробнее опишу.

4) Репост записи из группы

Тут надо повозиться. Дело в том, что у каждой записи - своя ссылка. Заранее мы её не знаем. Формат ссылки - вот такой:

https://vk.com/thejakeprojectband?w=wall-107943155_189

Сами записи - в виде ленты выложены на странице группы: https://vk.com/thejakeprojectband

Что мне нужно: чтобы прога репостила определённую запись по давности её публикации, вернее, по номеру, где 1 - самая свежая новость/запись, 2 - вторая по свежести запись - ну и т. д..

То есть, надо в коде страницы покопаться и решить, как лучше определять "новизну" записи. Маска названия в коде у всех записей одна: это wall-107943155_189 - где часть "10794315" - тот самый ИД группы, а вот последние цифры и делают номер каждой записи уникальным.

ДОПОЛНИТЕЛЬНЫЕ ФУНКЦИИ И НЮАНСЫ:

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

Очень хочется, чтобы в прогу можно было загрузить много аккаунтов. Можно даже через список .txt (например, логин:пароль:прокси:порт:пароль на прокси).

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

2) Планирование заданий.

То есть, грубо говоря, есть всего несколько основных типов заданий:

1. Приглашение в друзья (по критериям или без)

2. Приглашение в группу друзей (с возможностью приглашать по критериям или по списку ИД (тех из списка, кто есть в друзьях)).

3. Рассылка сообщений

4. Репосты записей

Вот все эти типы заданий нужно для каждого аккаунта иметь возможность запланировать: на опред. день и время, или выполнять регулярно (ежедневно или еженедельно - в опред. день недели).

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

3) ИНТЕРВАЛЫ

а) нужно иметь возможность настраивать интервалы между запросами: например, если приглашать в друзья без особой задержки, то капча будет появляться после кажого запроса. Если же делать 4 приглашения, где на 4-м появляется капча (и решается), а потом ждать 3 минуты, то следующая капча вылезет только после 4-го приглашения.

Думаю, надо просто выставлять паузу в секундах перед очередным запросом.

б) то же самое - и с другими заданиями: приглашения в группу, отправка сообщений - везде нужна регулируемая пауза.

4) КАПЧА

Здесь просто нюанс: я замечал, что капча появляется при добавлении в друзья и при приглашении в группу. Будет ли она в сообщениях - не знаю. Наверное, надо тестить. Вы скажете, если что, я потестирую на том аккаунте, который не жалко потерять (вдруг заблокируют).

Капчу, само собой, надо чтобы прога решала в автоматическом режиме - если в запросе от сервера ВК пришла ссылка с капчей, то нужно её решать.

5) НАСТРОЙКИ

Часть я уже описал выше, а тут уже собрал отдельные важные моменты:

а) возможность менять ключ к сервису разгадывания капчи

б) сразу вопрос: какое максимальное количество аккаунтов сможет поддерживать прога с 1 компа? Я про одновременную работу. Наверное, ещё от ширины канала Интернета зависеть будет, но там же вроде пустяковый трафик идёт, наверное можно и 100-200 аккаунтов одновременно запускать? Если будут высокие требования к ПК - без проблем, я смогу просто на разных компах запускать, даже на старых думаю нормально будет...

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

г) игнор-лист: желательно, но не обяхательно: ввести в прогу ИГНОР лист по приглашению в друзья — например, НЕ приглашать в друзья определённые ИДы, даже если они подходят по критериям. В принципе, это не критичная функция, если она будет замедлять работу проги - её можно не реализовывать

д) ВАЖНО: при приглашении в группу вести учёт, кого уже приглашали, а кого - нет. То есть, чтобы можно было включать или отключать повторное приглашение. Думаю, надо чтобы прога это в какой-то файлик текстовый экспортировала: приглашался ли такой-то ИД в такую-то группу, сколько раз. Можно вообще выставлять просто лимит, например, приглашать только 2 раза: если первый раз человек отклонил приглашение, на второй - тоже отклонил, то третий раз его уже не приглашаем. В текстовом файлике просто записывать, сколько раз кто приглашался. Это медленно, наверное, но фишка нужная. Ну и возможность отключить эту проверку (не сверяться с файлом статистики), чтобы быстрее было, например. Но есть делать так, как я думаю - то нужно вести такой учётный файл для каждого акканта. Тогда надо, наверное, задавать имя этому текстовому файлу исходя из ИД самого акк, чтобы прога не путалась в файлах и не запрашивала одновременно один файл с разных акков (при одновременной работе, на которую я и делаю акцент).

---

ИТОГ:

Как я это вижу в прикладном формате:

- запускаем прогу, входим в аккаунт (можно включить опцию автоматического входа для всех ранее загруженных в прогу аккаунтов).

- допустим, это новый аккаунт и заданий там нет, надо их создать

- в меню этого аккаунта нажимаем кнопку "Новое задание", выбираем тип задания, например "РЕПОСТ ЗАПИСИ ИЗ ГРУППЫ"

- устанавливаем дату и время, когда это надо сделать, также выставляем настройки - какой именно пост (по свежести) надо репостить, например это будет "1" - то есть, самый свежий.

- устанавливаем регулярност выполнения задания, например, если мы знаем, что в группе каждый понедельник ровно в 16:00 выходит новость, то мы ставим "еженедельно" и отмечаем "понедельник" в "16:30", таким образом получаем репост свежей новости каждую неделю.

Ну и по аналогии уже с остальными заданиями.

Заявки фрилансеров