Я хочу подключиться к сети TOR с помощью QtNetwork

Я разрабатываю свой браузер на PyQt6. На данный момент его код содержит два окна, MainWindow и ProxyWindow (не завершено).

from PyQt6.QtCore import *
from PyQt6.QtWidgets import *
from PyQt6.QtGui import *
from PyQt6.QtWebEngineWidgets import *
from PyQt6.QtPrintSupport import *
from proxy import Proxy
import os
import sys
 
dir_path = os.path.dirname(os.path.realpath(__file__))

class ProxyWindow(QMainWindow):
    def __init__(self):
        super().__init__()
        self.setFixedSize(QSize(525, 525))
        

class MainWindow(QMainWindow):
    global menu

    def __init__(self, *args, **kwargs):
        global menu_btn
        super(MainWindow, self).__init__(*args, **kwargs)
        self.setWindowIcon(QIcon(dir_path + r"\icon\browser_icon.png"))

        self.tabs = QTabWidget()
        self.tabs.setDocumentMode(True)
        self.tabs.tabBarDoubleClicked.connect(self.tab_open_doubleclick)
        self.tabs.currentChanged.connect(self.current_tab_changed)
        self.tabs.setTabsClosable(True)
        self.tabs.tabCloseRequested.connect(self.close_current_tab)
        self.setCentralWidget(self.tabs)

        self.status = QStatusBar()
        self.setStatusBar(self.status)
        navtb = QToolBar("Navigation")
        self.addToolBar(navtb)

        back_btn_icon = (dir_path + r'\icon\back.png')
        back_btn = QAction("Back", self)
        back_btn.setIcon(QIcon(back_btn_icon))
        back_btn.setStatusTip("Назад")
        back_btn.triggered.connect(lambda: self.tabs.currentWidget().back())
        navtb.addAction(back_btn)

        forward_btn_icon = (dir_path + r'\icon\forward.png')
        next_btn = QAction("Forward", self)
        next_btn.setIcon(QIcon(forward_btn_icon))
        next_btn.setStatusTip("Вперёд")
        next_btn.triggered.connect(lambda: self.tabs.currentWidget().forward())
        navtb.addAction(next_btn)

        reload_btn_icon = (dir_path + r'\icon\reload.png')
        reload_btn = QAction("Reload", self)
        reload_btn.setIcon(QIcon(reload_btn_icon))
        reload_btn.setStatusTip("Перезагрузить")
        reload_btn.triggered.connect(lambda: self.tabs.currentWidget().reload())
        navtb.addAction(reload_btn)

        home_btn_icon = (dir_path + r'\icon\home.png')
        home_btn = QAction("Home", self)
        home_btn.setIcon(QIcon(home_btn_icon))
        home_btn.setStatusTip("На главную страницу")
        home_btn.triggered.connect(self.navigate_home)
        navtb.addAction(home_btn)
        navtb.addSeparator()
        self.urlbar = QLineEdit()
        self.urlbar.returnPressed.connect(self.navigate_to_url)
        navtb.addWidget(self.urlbar)
        
        self.proxy_win = ProxyWindow()
        self.proxy_settings_btn_icon = (dir_path + r"\icon\proxy.png")
        self.proxy_settings_btn = QAction(self)
        self.proxy_settings_btn.setIcon(QIcon(self.proxy_settings_btn_icon))
        self.proxy_settings_btn.setStatusTip("Настройки прокси сервера")
        navtb.addAction(self.proxy_settings_btn)
        self.proxy_settings_btn.triggered.connect(self.proxy_win.show)
    
        self.start()
        self.add_new_tab(QUrl('http://duckduckgo.com'), 'Homepage')
        self.showMaximized()
        self.setWindowTitle("CloudWeb")            
  
    def start(self):
        browser = QWebEngineView()
        browser.setUrl(QUrl("https://333170.lp.tobiz.net/?v=878321"))
        i = self.tabs.addTab(browser, "CloudWEB")
        self.tabs.setCurrentIndex(i)

    def add_new_tab(self, qurl = None, label ="Blank"):

        if qurl is None:
            qurl = QUrl('http://ya.ru')

        browser = QWebEngineView()
        browser.setUrl(qurl)
        i = self.tabs.addTab(browser, label)
        self.tabs.setCurrentIndex(i)
        browser.urlChanged.connect(lambda qurl, browser = browser:
                                   self.update_urlbar(qurl, browser))
        browser.loadFinished.connect(lambda _, i = i, browser = browser:
                                     self.tabs.setTabText(i, browser.page().title()))

    def tab_open_doubleclick(self, i):
        if i == -1:
            self.add_new_tab(qurl=QUrl("http://dzen.ru"))

    
    def current_tab_changed(self, i):
        qurl = self.tabs.currentWidget().url()
        self.update_urlbar(qurl, self.tabs.currentWidget())
        self.update_title(self.tabs.currentWidget())

    def close_current_tab(self, i):
        if self.tabs.count() < 2:
            return
        self.tabs.removeTab(i)

    def update_title(self, browser):
        if browser != self.tabs.currentWidget():
            return
        title = self.tabs.currentWidget().page().title()
        self.setWindowTitle("% s - CloudWeb" % title)

    def navigate_home(self):
        self.tabs.currentWidget().setUrl(QUrl("duckduckgo.com"))

    def navigate_to_url(self):
        q = QUrl(self.urlbar.text())
        if q.scheme() == "":
            q.setScheme("http")
        self.tabs.currentWidget().setUrl(q)

    def update_urlbar(self, q, browser = None):
        if browser != self.tabs.currentWidget():
            return
        self.urlbar.setText(q.toString())
        self.urlbar.setCursorPosition(0)


        
app = QApplication(sys.argv)
app.setApplicationName("CloudWeb")
app.setStyle("Fusion")
window = MainWindow()
app.exec()

Я хочу создать отдельный файл, который подключает мой браузер к сети TOR. Я перерыл весь интернет, использовал requests, i2plib и torpy, но были либо ошибки, не связанные с моим кодом либо же не то, что мне нужно. Не хотелось бы в корне менять свой код. Помогите пожалуйста!


Ответы (1 шт):

Автор решения: Ilnarildarovuch

self.browser.setProxy(QNetworkProxy(QNetworkProxy.Socks5Proxy, '127.0.0.1', 9050))

→ Ссылка