Undocumented endpoint или попытки борьбы с имитацией активности «пользователя»?

d6aeef7325c247bccde8313f4522cabb.jpgАктуальность

Стоит учитывать, что данная статья актуальна для v=5.92. За последующие изменения работы VK API автор ответственности не несет.

В процессе изучения возможностей VK API столкнулся с, казалось бы, нелогичной вещью: обыкновенный пользователь имеет возможность добавить репост в отложенные записи:

5a9be8d48a21fcda6edbfabe1a22d219.png

При это в документации API про это ни слова:

8b185bd8a5e5657680013ca59f63bea3.pngОбращение в службу поддержки ВКонтакте

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

… или прикидываются?

Тогда было принято решение посмотреть, что из себя представляет запрос при отправке репоста в отложенные записи:

c5aab9ff72c12a2889ca9b6a0324ad3a.png

И что же вы видим? Некий параметр postpone с параметром удивительно похожим на Unix Timestamp.

Проверяем… и правда, дата та, которую мы указывали во времени публикации:

f9d023e2f08856e48d56a94c5aed6333.png

НО не все так просто, потому что при следующем коде:

delay_repost = vk_api.wall.repost(object=f'wall{-7486164_1052}', postpone=1735637040)

получает следующий ответ:

VkAPIError: 100. One of the parameters specified was missing or invalid.

Тут на помощь пришла смекалка. Ведь в методе wall.post был требуемый параметр, но назывался он иначе:

9d17f5839f58a1c662f3318f6dd4d39e.png

Меняем название параметра на publish_date:

delay_repost = vk_api.wall.repost(object=f'wall{-7486164_1052}', publish_date=1735637040)

2a29f720b7480e84e200b9b7fd813de4.png

Запись добавлена в отложенные и будет опубликована в указанные дату и время.

© Habrahabr.ru