I asked this question: Wrap packets in connect requests until reach the last proxy
And I learnt that to create a chains of proxies I have to:
- create a socket
- connect the socket to proxy A
- create a tunnel via A to proxy B - either with HTTP or SOCKS protocol similar
- create a tunnel via [A,B] to proxy C similar
- create a tunnel via [A,B,C] to D
- ... until your last proxy is instructed to built the tunnel to the
final target T
I got what I have to do until the second point, cause I think I just have to add the "CONNECT" header to the http request to the proxy A. But my question is, in this example http request:
CONNECT ipproxy:80 HTTP/1.1
Host: ?:80
In the host header I should put again the proxy ip or something else? Like the proxy B ip or the final site domain?
Also, I didn't understand how to go on from the third point to the next... because I don't know how to tell the proxy A to create a tunnel to proxyB and then proxy B to create a tunnel to proxy C that goes to the final site..
Examples of how can I do it with python? Or some doc?
There is no Host header with CONNECT. I.e. to request HTTP proxy A to create a tunnel to HTTP proxy B you just use:
And then you have this tunnel to proxy B via proxy A. Inside this tunnel you then can create another tunnel to target T, i.e. on the same socket send and receive next:
Note that not all proxies allow you to CONNECT to arbitrary hosts and ports and they might also not allow arbitrary protocols like a tunnel inside a tunnel but only selected protocols like HTTPS.