Is it possible to run mitmproxy with pyqt5 GUI app? It just freezes my app
import sys
from PyQt5.QtWidgets import QApplication, QWidget
from multiprocessing import Process
class MyWindow(QWidget):
def __init__(self):
super().__init__()
self.setWindowTitle("My Window")
self.setGeometry(100, 100, 400, 200)
def start_mitmdump():
from mitmproxy.tools.main import mitmdump
mitmdump(['-q', '-s', __file__, '--ssl-insecure'])
if __name__ == '__main__':
# Start mitmdump in a separate process
mitm_process = Process(target=start_mitmdump)
mitm_process.start()
# Start PyGUI application
app = QApplication(sys.argv)
window = MyWindow()
window.show()
# Wait for the mitmdump process to finish
mitm_process.join()
# Exit the application
sys.exit(app.exec_())
I have tried doing this but it returns an error
import sys
from PyQt5.QtWidgets import QApplication, QWidget
from threading import Thread
class MyWindow(QWidget):
def __init__(self):
super().__init__()
self.setWindowTitle("My Window")
self.setGeometry(100, 100, 400, 200)
def start_mitmdump():
from mitmproxy.tools.main import mitmdump
mitmdump(['-q', '-s', __file__, '--ssl-insecure'])
if __name__ == '__main__':
# Start mitmdump in a separate thread
mitm_thread = Thread(target=start_mitmdump)
mitm_thread.daemon = True
mitm_thread.start()
# Start PyGUI application
app = QApplication(sys.argv)
window = MyWindow()
window.show()
# Start the Qt event loop
sys.exit(app.exec_())
Traceback (most recent call last): File "C:\Program Files\Python311\Lib\threading.py", line 1045, in _bootstrap_inner self.run() File "C:\Program Files\Python311\Lib\threading.py", line 982, in run self._target(*self._args, **self._kwargs) File "D:\python new\ProxyGUI\mitm_mre.py", line 13, in start_mitmdump mitmdump(['-q', '-s', file, '--ssl-insecure']) File "C:\Users\User\AppData\Roaming\Python\Python311\site-packages\mitmproxy\tools\main.py", line 150, in mitmdump run(dump.DumpMaster, cmdline.mitmdump, args, extra) File "C:\Users\User\AppData\Roaming\Python\Python311\site-packages\mitmproxy\tools\main.py", line 127, in run return asyncio.run(main()) ^^^^^^^^^^^^^^^^^^^ File "C:\Program Files\Python311\Lib\asyncio\runners.py", line 190, in run return runner.run(main) ^^^^^^^^^^^^^^^^ File "C:\Program Files\Python311\Lib\asyncio\runners.py", line 118, in run return self._loop.run_until_complete(task) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "C:\Program Files\Python311\Lib\asyncio\base_events.py", line 654, in run_until_complete return future.result() ^^^^^^^^^^^^^^^ File "C:\Users\User\AppData\Roaming\Python\Python311\site-packages\mitmproxy\tools\main.py", line 121, in main signal.signal(signal.SIGINT, _sigint) File "C:\Program Files\Python311\Lib\signal.py", line 58, in signal handler = _signal.signal(_enum_to_int(signalnum), _enum_to_int(handler)) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ValueError: signal only works in main thread of the main interpreter