AuthError: Unknown error (AUTH; no sid)
Добрый день! Подскажите, как обходить ошибку: AuthError: Unknown error (AUTH; no sid)? Возникает при стандартной авторизации по логину и паролю.
Добрый день. Установите версию из гитхаба, а не из pypi
и толку? стало вылетать другая ошибка: Ошибка авторизации: Failed to get the value of variable window.init.
и толку? стало вылетать другая ошибка: Ошибка авторизации: Failed to get the value of variable window.init.
толк в том, что в гите актуальная версия, а на pypi нет
проверил, все работает отлично
смотрите что у вас с сетью, ошибка "Failed to get the value of variable window.init" говорит о том, что не загружается страница https://m.vk.com/join?vkid_auth_type=sign_in
Сеть есть, Страница открывается. Обновился до мастер версии.. Ошибка авторизации: Failed to get the value of variable window.init.
Страница открывается
она может открываться в браузере, но при попытке загрузить из библиотеки столкнуться с блокировкой со стороны ВК или какими-то иными сетевыми проблемами
нужно включить дебаг в библиотеке и проверить логи:
from vk_api.utils import enable_debug_mode
.....
enable_debug_mode(vk_session, print_content=True)
Ох и портянка тут..
Ох и портянка тут.. https://pastebin.com/yjELzySE
403 - Error, this is a private paste or is pending moderation. If this paste belongs to you, please login to Pastebin to view it.
https://gist.github.com/chOng-m0rrino/249da9c803b002057701e9b52ce9afb4
интересно, вам возвращается вот такая страница 
тут я уже затрудняюсь в ответе, профиль новый? заполнен?
https://gist.github.com/chOng-m0rrino/249da9c803b002057701e9b52ce9afb4
интересно, вам возвращается вот такая страница !
тут я уже затрудняюсь в ответе, профиль новый? заполнен?
профилю больше 10 лет, заполнен, закрыт, гео не ру.
logger.warning("[VK] Авторизация через логин и пароль.")
self.vk_session = vk_api.VkApi(
login=self.config['vk']['login'],
password=self.config['vk']['password'],
auth_handler=lambda: self.auth_handler(),
captcha_handler=self.captcha_handler,
app_id=6287487,
client_secret="QbYic1K3lEV5kTGiqlq2",
session=session
)
try:
await asyncio.to_thread(self.vk_session.auth)
except vk_api.AuthError as error_msg:
logger.error(f"[VK] Ошибка авторизации: {error_msg}")
return None, None
self.config['vk']['token'] = self.vk_session.token['access_token']
try:
vk = self.vk_session.get_api()
user_info = await asyncio.to_thread(vk.users.get, fields='id,first_name,last_name')
if not user_info:
logger.error("[VK] Не удалось получить информацию о пользователе.")
else:
self.print_vk_auth(user_info[0])
group_id = self.config['global'].get('group_id')
if group_id:
group_info = await asyncio.to_thread(vk.groups.getById, group_id=group_id, fields='is_admin,is_member')
if group_info:
self.print_vk_group(group_info)
else:
logger.error(f"[VK GROUP] Не удалось получить информацию о группе {group_id}.")
else:
logger.warning("[VK GROUP] ID группы не указан в конфигурации.")
except vk_api.AuthError as error_msg:
self.auth_error(error_msg, 0)
return None, None
return self.vk_session, self.config['vk']['token']
def auth_handler(self):
totp_code = self.generate_totp()
if totp_code:
key = totp_code
else:
key = input("[TOTP] Введите TOTP код вручную: ")
remember_device = True
return key, remember_device
def captcha_handler(self, captcha):
logger.info("[CAPTCHA] Требуется ввод капчи.")
logger.info(f"[CAPTCHA] Ссылка на капчу: {captcha.get_url()}")
key = input(f"[CAPTCHA] Введите текст с картинки {captcha.get_url()}: ").strip()
return captcha.try_again(key)
профилю больше 10 лет, заполнен, закрыт, гео не ру.
на всякий случай, у вас там секретный ключ спалился, лучше удалить комментарий, если конечно это не тестовое приложение =)
такс, это я уже вечером туплю, он еще до профиля не дошел, поэтому не важно, заполнен или нет =)
в браузере в режиме инкогнито если открывать ссылку выше - такая же страница со скриншота?
Возможно это какое-то нововведение и скоро оно у всех появится, типо очередной вариации формы входа....
app id и client secret от самого вк. Я подозреваю что может в client_secret дело, попробую без него завтра. Может они его изменили.
Cсылка https://m.vk.com/join?vkid_auth_type=sign_in сразу редирект на эту форму
если сменить app_id=7934655 на app_id=6287487 .. другая форма
app id и client secret от самого вк. Я подозреваю что может в client_secret дело, попробую без него завтра. Может они его изменили.
я у себя с ними попробовал, зашел вроде как
сразу редирект на эту форму
такая и должна быть =)
Меня смущает другое, у вас в логе user-agent не такой, как по-умолчанию в библиотеке. И судя по коду, вы сами сессию создаете, а это может быть проблемой. Вот ваша строчка в логе и видно, что ответ 200
0.13 GET https://m.vk.com/join?vkid_auth_type=sign_in {'User-Agent': 'python-requests/2.32.3', 'Accept-Encoding': 'gzip, deflate, br', 'Accept': '*/*', 'Connection': 'keep-alive', 'Cookie': 'remixlang=3; remixstlid=9094375928467462456_YhyeyvaSg5tfqVcBU9YOmgL8zhddTvWU1GMvHU8AEfg; remixstid=305159167_byuoC1ZUjw9ZZBGvTUrctZXv0it2PJB5qQZYfWWMg2D; remixua=-1%7C-1%7C336%7C2196054523; remixff=0; remixmdevice=1920/1080/2/!!-!!!!'} None 200 []
А вот мой лог и ответ 302
0.18 GET https://m.vk.com/join?vkid_auth_type=sign_in {'User-agent': 'Mozilla/5.0 (Windows NT 10.0; rv:109.0) Gecko/20100101 Firefox/115.0', 'Accept-Encoding': 'gzip, deflate', 'Accept': '*/*', 'Connection': 'keep-alive', 'Cookie': 'remixlang=0; remixstlid=9051310273957241111_XlyVszBbOwnJ3WGrljUeVQgyvupOdpVs9Stn2bD3Mwc; remixlgck=607e058539a2e56fa5; remixua=43%7C-1%7C333%7C2770062563; remixstid=151919067_mIXzj0LAoPiPCecGdEgtiAZBMLbzVvQxvptstwfz32H; remixmdevice=1920/1080/2/!!-!!!!'} None 302 []
Я замечал, что ВК не любит curl, возможно он не любит и requests, попробуйте в своей сессии изменить user-agent, либо отказаться, хотя бы в тестовых целях, от своей сессии
да ничего не меняется. Failed to get the value of variable window.init. ... что то с либой не иначе!
Фух. Начал все с начала и смог успешно авторизоваться и получить токен. Удалил под ноль старую pip uninstall vk-api -y и накатил с мастера pip install git+https://github.com/python273/vk_api.git@master. и Заработало!
import asyncio
import logging
import vk_api
from vk_api.exceptions import AuthError, VkApiError, TwoFactorError
import requests
import pyotp
class VKAuth:
def __init__(self):
self.LOGIN = "7XXXXXXXXX" # ← Ваш номер телефона
self.PASSWORD = "XXXXXXXX" # ← Ваш пароль
self.TOTP_KEY = "XXXXXXXXXXXXX" # ← Секретный ключ 2FA (Google Authenticator)
self.APP_ID = 6287487 # ID приложения
self.CLIENT_SECRET = "QbYic1K3lEV5kTGiqlq2" # Секретный ключ
self.session = requests.Session()
self.session.headers.update({
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/123.0.0.0 Safari/537.36'
})
async def auth(self):
logger.info("НАЧАЛО ПРОЦЕССА АВТОРИЗАЦИИ")
try:
# 1. Проверка IP
await self.log_connection_ip()
# 2. Создаем сессию VK
vk_session = vk_api.VkApi(
login=self.LOGIN,
password=self.PASSWORD,
auth_handler=self.auth_handler,
captcha_handler=self.captcha_handler,
app_id=self.APP_ID,
client_secret=self.CLIENT_SECRET,
scope="offline",
session=self.session
)
# 3. Авторизация
logger.debug("ВЫПОЛНЕНИЕ АВТОРИЗАЦИИ")
await asyncio.to_thread(vk_session.auth, token_only=True)
logger.debug("АВТОРИЗАЦИЯ ЗАВЕРШЕНА")
# 4. Проверка токена
if not vk_session.token.get('access_token'):
raise AuthError("Получен пустой access_token")
# 5. Проверка работоспособности
vk = vk_session.get_api()
user = await asyncio.to_thread(vk.users.get)
logger.info(f"Авторизация успешна! Пользователь: {user[0]['first_name']} {user[0]['last_name']}")
return vk_session
except TwoFactorError as e:
logger.error(f"[2FA ОШИБКА] {e}")
except AuthError as e:
logger.error(f"[ОШИБКА АВТОРИЗАЦИИ] {e}")
except VkApiError as e:
logger.error(f"[VK API ОШИБКА] {e}")
except Exception as e:
logger.exception("Непредвиденная ошибка:")
return None
def auth_handler(self): # Обработчик двухфакторной аутентификации
if self.TOTP_KEY:
totp = pyotp.TOTP(self.TOTP_KEY)
code = totp.now()
logger.info(f"[2FA] Используется код: {code}")
return code, True # Код и запомнить устройство
else:
code = input("[2FA] Введите код из SMS/приложения: ")
return code.strip(), True
def captcha_handler(self, captcha): # Обработчик CAPTCHA
logger.warning(f"[CAPTCHA] Требуется ввод: {captcha.get_url()}")
code = input("[CAPTCHA] Введите текст с картинки: ").strip()
return captcha.try_again(code)
async def log_connection_ip(self):
try:
response = await asyncio.to_thread(
self.session.get,
"https://api.ipify.org?format=json"
)
ip_data = response.json()
logger.info(f"[IP] Текущий IP: {ip_data.get('ip')}")
except Exception as e:
logger.error(f"[IP ОШИБКА] {e}")
if __name__ == "__main__":
async def main():
auth = VKAuth()
vk_session = await auth.auth()
if vk_session:
print("УСПЕХ! Токен:", vk_session.token['access_token'])
else:
print("АВТОРИЗАЦИЯ НЕ УДАЛАСЬ")
asyncio.run(main())
Авторизация через access_token (без емайла и пароля) решает проблему