Python - 如何创建代理隧道
Python - How to create a tunnel of proxies
我问了这个问题:
而且我了解到,要创建代理链,我必须:
- 创建套接字
- 将套接字连接到代理 A
- 创建一个通过 A 到代理 B 的隧道 - 使用 HTTP 或 SOCKS
协议相似
- 创建一个通过 [A,B] 到类似代理 C 的隧道
- 创建一条从 [A,B,C] 到 D 的隧道
- ...直到指示您的最后一个代理建立通往
的隧道
最终目标 T
在第二点之前我得到了我必须做的事情,因为我想我只需要将 "CONNECT" header 添加到代理 A 的 http 请求中。但我的问题是,
在这个例子中 http 请求:
CONNECT ipproxy:80 HTTP/1.1
Host: ?:80
在主机中header我应该再放代理IP还是别的什么?喜欢代理B ip还是最终站点域名?
另外,我不明白如何从第三点继续到下一个......因为我不知道如何告诉代理A创建到代理B的隧道然后代理B创建通往最终站点的代理 C 的隧道..
如何使用 python 进行操作的示例?或者一些文档?
没有主机 header 使用 CONNECT。 IE。请求 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)。
我问了这个问题:
而且我了解到,要创建代理链,我必须:
- 创建套接字
- 将套接字连接到代理 A
- 创建一个通过 A 到代理 B 的隧道 - 使用 HTTP 或 SOCKS 协议相似
- 创建一个通过 [A,B] 到类似代理 C 的隧道
- 创建一条从 [A,B,C] 到 D 的隧道
- ...直到指示您的最后一个代理建立通往
的隧道 最终目标 T
在第二点之前我得到了我必须做的事情,因为我想我只需要将 "CONNECT" header 添加到代理 A 的 http 请求中。但我的问题是, 在这个例子中 http 请求:
CONNECT ipproxy:80 HTTP/1.1
Host: ?:80
在主机中header我应该再放代理IP还是别的什么?喜欢代理B ip还是最终站点域名?
另外,我不明白如何从第三点继续到下一个......因为我不知道如何告诉代理A创建到代理B的隧道然后代理B创建通往最终站点的代理 C 的隧道..
如何使用 python 进行操作的示例?或者一些文档?
没有主机 header 使用 CONNECT。 IE。请求 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)。