-
Notifications
You must be signed in to change notification settings - Fork 41
/
Copy pathvk_auth__requests_re.py
73 lines (54 loc) · 1.75 KB
/
vk_auth__requests_re.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
__author__ = "ipetrash"
import re
import requests
def auth(
login: str, password: str
) -> (requests.sessions.Session, requests.models.Response):
"""
Функция для авторизации в вк.
"""
def get_form_action(html: str) -> str:
"""
Функция вернет ссылку для запроса авторизации
"""
form_action = re.findall(r'<form(?= ).* action="(.+)"', html)
if form_action:
return form_action[0]
session = requests.Session()
# Без авторизации не получится воспользоваться страницей укорачивания ссылок
url = "https://m.vk.com"
rs = session.get(url)
print(rs)
login_form_action = get_form_action(rs.text)
if not login_form_action:
raise Exception(
"Не получилось из формы авторизации вытащить ссылку на авторизацию"
)
login_form_data = {
"email": login,
"pass": password,
}
rs = session.post(login_form_action, login_form_data)
print(rs, type(rs))
return session, rs
if __name__ == "__main__":
LOGIN = "<LOGIN>"
PASSWORD = "<PASSWORD>"
session, rs = auth(LOGIN, PASSWORD)
print(session, session.cookies)
print(rs, rs.url)
print()
from bs4 import BeautifulSoup
root = BeautifulSoup(rs.content, "html.parser")
for li in root.select(".main_menu > li"):
print(li.text)
# Новости
# Уведомления
# Сообщения
# Друзья
# Группы
# Фотографии
# Закладки
# Поиск