{'cookie_0': ['CONSENT', 'PENDING+316', '.google.com'], 'cookie_1': ['SOCS', 'CAISHAgCEhJnd3NfMjAyMzAxMTAtMF9SQzEaAmh1IAEaBgiAp5KeBg', '.google.com'], 'cookie_2': ['OTZ', '6859758_52_52_123900_48_436380', 'accounts.google.com'], ......}class Gmail:
def __init__(self, cookie):
self.cookie = self.convert_cookie(cookie)
self.mail = ""
self.session = self.create_session()
def create_session(self):
ua = UserAgent()
headers = {
"user-agent": ua.random
}
session = aiohttp.ClientSession(headers=headers, cookies=self.cookie)
return session
def convert_cookie(self, cookie):
converted = {}
text = cookie.split("\n")
for index, row in enumerate(text):
segments = row.split("\t")
if len(segments) == 7:
converted[f"{segments[5].strip()}"] = segments[6].strip()
return converted
import asyncio
from datetime import datetime, timedelta, timezone
import aiohttp
from yarl import URL
COOKIES = {'prop_opt_readability': '1', 'langpref': 'en_LJ/1776890499'}
HOST = URL('https://livejournal.com')
def _create_cookie(name: str, value: str, url: URL) -> str:
expires = (datetime.now(timezone.utc) + timedelta(days=365)).strftime(
'%A, %d-%b-%Y %H:%M:%S GMT'
)
return (
# Параметры кук
f'{name}={value}; '
f'expires={expires}; '
f'path=/; '
# Точка в начале не домена нужна, aiohttp всё равно её уберёт
f'domain={url.host}; '
f'Secure; SameSite=None'
)
def _set_cookies(session: aiohttp.ClientSession, cookies_in: dict[str, str], url: URL) -> None:
cookies_out = []
for key, value in cookies_in.items():
cookies_out.append(_create_cookie(key, value, url))
session.cookie_jar.update_cookies_from_headers(cookies_out, url)
async def main():
async with aiohttp.ClientSession() as session:
_set_cookies(session, COOKIES, HOST)
print('\n***Словарь объекта cookie_jar***')
print(session.cookie_jar._cookies)
print('\n***Куки с подробностями***')
for cookie in session.cookie_jar:
print(f'{cookie.key}: {cookie.value}')
for key, value in cookie.items():
if value:
print(f'{key}: {value}')
print('--------------------------------')
if __name__ == '__main__':
asyncio.run(main())