$ https_proxy=0.0.0.0:8080 curl https://www.free.fr
curl: (35) Send failure: Broken pipe
$ python3 -m pyproxy --debug
date=2026-04-30 11:12:50 level=DEBUG file=server.py function=start message=Configuration used:
date=2026-04-30 11:12:50 level=DEBUG file=server.py function=start message=[*] allowed_subnets = None
date=2026-04-30 11:12:50 level=DEBUG file=server.py function=start message=[*] config_custom_header = config/custom_header.json
date=2026-04-30 11:12:50 level=DEBUG file=server.py function=start message=[*] config_shortcuts = config/shortcuts.txt
date=2026-04-30 11:12:50 level=DEBUG file=server.py function=start message=[*] debug = True
date=2026-04-30 11:12:50 level=DEBUG file=server.py function=start message=[*] filter_config = ProxyConfigFilter(no_filter=False, filter_mode='local', blocked_sites='config/blocked_sites.txt', blocked_url='config/blocked_url.txt')
date=2026-04-30 11:12:50 level=DEBUG file=server.py function=start message=[*] host_port = ('0.0.0.0', 8080)
date=2026-04-30 11:12:50 level=DEBUG file=server.py function=start message=[*] html_403 = assets/403.html
date=2026-04-30 11:12:50 level=DEBUG file=server.py function=start message=[*] logger_config = ProxyConfigLogger(access_log='logs/access.log', block_log='logs/block.log', no_logging_access=False, no_logging_block=False, console_format='date=%(asctime)s level=%(levelname)s file=%(filename)s function=%(funcName)s message=%(message)s', access_log_format='date=%(asctime)s ip_src=%(ip_src)s url=%(url)s method=%(method)s domain=%(domain)s port=%(port)s protocol=%(protocol)s bytes_sent=%(bytes_sent)s bytes_received=%(bytes_received)s tls_version=%(tls_version)s', block_log_format='date=%(asctime)s ip_src=%(ip_src)s url=%(url)s method=%(method)s domain=%(domain)s port=%(port)s protocol=%(protocol)s', datefmt='%Y-%m-%d %H:%M:%S')
date=2026-04-30 11:12:50 level=DEBUG file=server.py function=start message=[*] monitoring_config = ProxyConfigMonitoring(flask_port=5000, flask_pass='password')
date=2026-04-30 11:12:50 level=DEBUG file=server.py function=start message=[*] proxy_config = ProxyConfigProxy(enable=False, host='127.0.0.1', port=8081)
date=2026-04-30 11:12:50 level=DEBUG file=server.py function=start message=[*] ssl_config = ProxyConfigSSL(ssl_inspect=False, inspect_ca_cert='certs/ca/cert.pem', inspect_ca_key='certs/ca/key.pem', inspect_certs_folder='certs/', cancel_inspect='config/cancel_inspect.txt')
date=2026-04-30 11:12:50 level=DEBUG file=server.py function=_initialize_processes message=[*] Starting the filter process...
date=2026-04-30 11:12:50 level=INFO file=server.py function=start message=Proxy server started on ('0.0.0.0', 8080)...
date=2026-04-30 11:12:53 level=DEBUG file=server.py function=start message=Connection from ('127.0.0.1', 38550)
Exception in thread Thread-1 (handle_client):
Traceback (most recent call last):
File "/usr/lib/python3.13/threading.py", line 1043, in _bootstrap_inner
self.run()
~~~~~~~~^^
File "/usr/lib/python3.13/threading.py", line 994, in run
self._target(*self._args, **self._kwargs)
~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/lroussea/.virtualenvs/pyproxy/lib/python3.13/site-packages/pyproxy/handlers/client.py", line 108, in handle_client
https_handler.handle_https_connection(client_socket, first_line)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/lroussea/.virtualenvs/pyproxy/lib/python3.13/site-packages/pyproxy/handlers/https.py", line 327, in handle_https_connection
bytes_sent, bytes_received = self.transfer_data_between_sockets(
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
client_socket, server_socket
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
)
^
File "/home/lroussea/.virtualenvs/pyproxy/lib/python3.13/site-packages/pyproxy/handlers/https.py", line 380, in transfer_data_between_sockets
target_ip, target_port = server_socket.getpeername()
^^^^^^^^^^^^^^^^^^^^^^
ValueError: too many values to unpack (expected 2)
Describe the bug
The proxy works fine for HTTP.
For HTTPS I get an error:
ValueError: too many values to unpack (expected 2)To Reproduce
Steps to reproduce the behavior:
mkvirtualenv pyproxypip install pyproxytoolsmkdir configtouch config/blocked_sites.txtpython3 -m pyproxyIn another terminal use:
Configuration used
No configuration. I use an empty
config/blocked_sites.txtfileExpected behavior
I get the https page
Logs
Additional context
Add any other context about the problem here.