PySide6 сохраняем cookie

Рейтинг: 0Ответов: 1Опубликовано: 30.06.2023

Есть программы, там две вкладки (сайт один и тот же) Как сделать так, что для каждой вкладки сохранялись cookie в разные папки? возможно это сделать ? В пример возьмем вк, в одной вкладке один пользователь, в другой вкладке другой пользователь. При перезапуске программы сохранялись данные. как это можно реализовать? Код прилагаю.

import sys

from PySide6.QtWebEngineCore import QWebEnginePage
from PySide6.QtWebEngineWidgets import QWebEngineView
from PySide6.QtWidgets import (QApplication, QMainWindow, QTabWidget)


class MyWebView(QWebEngineView):
    def createWindow(self, type_):
        if type_ == QWebEnginePage.WebBrowserBackgroundTab:
            # Вызывается при Ctrl+ЛКМ / СКМ
            return self.window().add_tab(self.url())


class MainWindow(QMainWindow):

    def __init__(self):
        super().__init__()
        self.setWindowTitle('Программа')
        self.tab_widget = QTabWidget(self)
        self.setCentralWidget(self.tab_widget)

        web_view = MyWebView()
        web_view.setUrl('https://vk.com/')
        self.tab_widget.addTab(web_view, 'dex')

        web_view2 = MyWebView()
        web_view2.setUrl('https://vk.com/')
        self.tab_widget.addTab(web_view2, 'Romir')

    def add_tab2(self, url):
        web_view2 = MyWebView()
        web_view2.setUrl(url)
        self.tab_widget.addTab(web_view2, 'user1')
        return web_view2  # Возвращаем QWebEngineView для запроса

    def add_tab(self, url):
        web_view = MyWebView()
        web_view.setUrl(url)
        self.tab_widget.addTab(web_view, 'user2')
        return web_view  # Возвращаем QWebEngineView для запроса


if __name__ == '__main__':
    app = QApplication(sys.argv)
    mainWin = MainWindow()
    availableGeometry = mainWin.screen().availableGeometry()
    mainWin.resize(availableGeometry.width() * 3 / 3, availableGeometry.height() * 3 / 3)
    mainWin.show()
    sys.exit(app.exec())

Ответы

▲ 0

Cookies храняться в профиле пользователя, поэтому нужно указать profile для QWebEnginePage.
По умолчанию QWebEnginePage работает с профилем default. Но можно создать свой собственный QWebEngineProfile для каждой из страниц - тогда cookies будут сохраняться отдельно в каждом из них.