Skip to main content

OldVKAPI

Синхронный Python-клиент к API из OldVK.apk v1.3.1 (com.vkontakte.android). Протокол восстановлен дизассемблированием classes.dex — подробности в OldVK_API.md (главы 2–10).

Коротко о протоколе: все вызовы — POST http(s)://oldvk.mooo.com:8080/api.php с полями method/v=3.0/format=json/api_id=2274003 + параметры + sig (MD5(uid + сортированные key=value + secret)) + sid. Авторизация — auth.getTokenSecuredigest(MD5)auth.getSessionSecure.

Установка

pip install requests
pip install -e .   # из каталога OldVKAPI

CLI — без кода

export OLDVK_LOGIN='...' OLDVK_PASSWORD='...'
python -m oldvkapi login
python -m oldvkapi call newsfeed.get --param count=5 --param filters=post
python -m oldvkapi execute 'return {c:API.getCounters()};'
python -m oldvkapi longpoll --count 3
python -m oldvkapi upload-wall-photo pic.jpg --message "Привет!"

Все команды, флаги и коды выхода — в разделе CLI на сайте документации.

Быстрый старт (код)

from oldvkapi import OldVK

vk = OldVK(session_file="~/.oldvkapi/session.json",
           auto_reauth=True,      # молча обновлять сессию при error 3/4
           network_retries=2)     # повторять при обрывах сети

# Вход логином (один раз; дальше сессия берётся из JSON-файла):
vk.login("user@example.com", "password")

# или готовой сессией:
# vk = OldVK.from_session(uid=123, sid="...", secret="...")

print(vk.messages.dialogs())          # диалоги через execute-шаблон
print(vk.wall.posts(owner_id=123))    # посты стены
vk.activity.online()                  # heartbeat онлайна

# Вместо vk.close() можно использовать контекстный менеджер:
# with OldVK(session_file=...) as vk: ...

Логирование: logging.basicConfig(level=logging.DEBUG) — логгер oldvkapi печатает каждый запрос, вход и автоматические повторы. После login() сессия несёт session.my_name (имя и фамилию владельца).

Разделы

Доступ — свойствами клиента, методы повторяют имена API из APK:

Свойство Методы (примеры)
users get_profiles(uids, fields, name_case)
friends get, get_by_phones, add, delete, mutual, get_requests
groups get_by_id
status get, set
activity online
messages send, get_history, get_by_id, delete, mark_as_read, dialogs, search, slow_poll*
wall post, delete, add_comment, delete_comment, get_comments, add_like, delete_like, posts*
likes add, delete
polls add_vote, get_by_id
photos get_albums, get, get_user_photos, get_by_id, get_comments, get_tags, create_comment, create_album, edit_album, delete_album, delete, edit, comments_full, info
video get, save, get_comments
audio get, get_albums, search, add, delete, direct_url*
docs get_upload_server, save
notes get_by_id, get_comments
places search, get_checkins, checkin, add, get_by_id, get_city_by_id, get_country_by_id
newsfeed get, get_comments

* — через execute (готовые шаблоны в oldvkapi/execute.py).

Прямой вызов любого метода: vk.call("wall.post", owner_id=1, message="hi").

Ошибки и капча

from oldvkapi import CaptchaNeeded, ReauthNeeded, ApiError

try:
    vk.wall.post(owner_id=1, message="hi")
except CaptchaNeeded as cap:
    print(cap.captcha_img)          # показать картинку пользователю
    key = input("Капча: ")
    vk.call(cap.method, captcha_sid=cap.captcha_sid,
            captcha_key=key, **cap.params)
except ReauthNeeded:
    vk.reauth()                     # нужен login() с паролем в памяти
except ApiError as err:
    print(err.code, err.message)

Автоматический режим — без try/except (повтор делает сам клиент):

vk = OldVK(session_file="session.json",
           captcha_handler=lambda img, sid, method, params: input(f"{img}: "))
vk.wall.post(owner_id=1, message="hi")   # re-auth и капча — автоматически

error_code 7 возвращается как None (как в самом приложении).

LongPoll

for update in vk.longpoll.updates():   # бесконечный генератор
    print(update)

refresh() — новый server/key/ts; poll_url() — текущий a_check-URL; slow_poll(time_offset) — запасной опрос из приложения.

Загрузка файлов

vk.uploader.upload_wall_photo("pic.jpg", owner_id=vk.uid, message="Фото!")
vk.uploader.upload_album_photo(aid=123, file_path="pic.jpg")
vk.uploader.upload_audio("track.mp3")
vk.uploader.upload_doc("file.pdf")
vk.uploader.upload_video("Ролик", "vid.mp4", description="...")

Оговорка про digest

Формула digest = MD5(SECRET:nonce:login:password) восстановлена из байт-кода Auth.doAuth (порядок операндов — по append-цепочке). Если сервер её отвергнет — используйте oldvkapi.auth.auth_session_raw(nonce, login, digest) с собственной формулой.

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

oldvkapi-0.4.0.tar.gz (30.4 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

oldvkapi-0.4.0-py3-none-any.whl (34.6 kB view details)

Uploaded Python 3

File details

Details for the file oldvkapi-0.4.0.tar.gz.

File metadata

  • Download URL: oldvkapi-0.4.0.tar.gz
  • Upload date:
  • Size: 30.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/7.0.0 CPython/3.13.5

File hashes

Hashes for oldvkapi-0.4.0.tar.gz
Algorithm Hash digest
SHA256 9c7c45d5f2e33244f94be99d96f7f19a7884396e8eafe202d5d796aaac7083b7
MD5 003a06a65b2bc6afc0a6571fe44e971d
BLAKE2b-256 14735986882c80b64ba68f7746a4d627c5fe84c95a110d5fe4c8785a90f6c211

See more details on using hashes here.

File details

Details for the file oldvkapi-0.4.0-py3-none-any.whl.

File metadata

  • Download URL: oldvkapi-0.4.0-py3-none-any.whl
  • Upload date:
  • Size: 34.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/7.0.0 CPython/3.13.5

File hashes

Hashes for oldvkapi-0.4.0-py3-none-any.whl
Algorithm Hash digest
SHA256 5ee384a3f584bcd493e740d7bdadbe476232b6df76b88aa2ada05271eff63783
MD5 ba5e7e408fc84f599ba5227c102ace69
BLAKE2b-256 7c1dde5c5004becfd417a852e16a3077780e9550f531aec6452f9bfbf75e3876

See more details on using hashes here.

Release history Release notifications | RSS feed

This release

0.4.0 This release

2 files

0.3.0

2 files

0.2.0

2 files

0.1.0

2 files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page