我问了这个问题:Wrap packets in connect requests until reach the last proxy
我了解到要创建代理链,我必须:
我得到了我要做的事情直到第二点,因为我认为我只需要将“CONNECT”标题添加到代理A的http请求中。但我的问题是, 在此示例http请求中:
CONNECT ipproxy:80 HTTP/1.1
Host: ?:80
在主机头中我应该再次放置代理ip或其他东西?像代理B ip或最终站点域?
另外,我不明白如何继续从第三点到下一步...因为我不知道如何告诉代理A创建一个到proxyB的隧道,然后代理B来创建一个隧道代理进入最终网站的C ..
如何使用python执行此操作的示例?还是一些医生?
答案 0 :(得分:1)
CONNECT没有主机头。即请求HTTP代理A创建到HTTP代理B的隧道,您只需使用:
>>> CONNECT B_host:B_port HTTP/1.0
>>>
<<< 200 connections established
<<<
然后你有这个隧道通过代理A代理B.在这个隧道内你可以创建另一个目标T的隧道,即在同一个套接字发送和接收下一个:
>>> CONNECT T_host:T_port HTTP/1.0
>>>
<<< 200 connections established
<<<
请注意,并非所有代理都允许您连接到任意主机和端口,并且它们可能也不允许任意协议(如隧道内的隧道),而只允许选择HTTPS等协议。