I answer after this long time, because recently I worked with this concept. It may help others.
To work with the CONNECT http proxy server, you need to create a socket connection with the server https port (for example, 443). After establishing the connection, you can send "HTTP / 1.1 200 Connection established" as a response.
After that, the client and server communicate with each other through a proxy. The proxy should simply transfer data from the client socket to the server socket and vice versa. The client and server will exchange information about the certificate to establish a connection, after the connection is confirmed, they will begin to transmit data in an encrypted format, so the proxy will not be able to understand anything.
The following code may help.
def _read_write(self): socs = [self.client, self.target] count = 0 while 1: count += 1 (recv, _, error) = select.select(socs, [], socs, 3) if error: break if recv: for in_ in recv: data = in_.recv(BUFLEN) if in_ is self.client: out = self.target else: out = self.client if data: out.send(data) print(data) count = 0 if count == time_out_max: break
Hope this answer helps anyone who needs it. Since I had to go through a lot to find this answer.
source share