我不知道这种代理服务器的正确名称是什么,欢迎您修复我的问题标题。
当我在谷歌上搜索代理服务器时,很多工具都是这样的maproxy https://pypi.python.org/pypi/maproxy/0.0.12 or 少于 100 行代码的 python 代理 http://voorloopnul.com/blog/a-python-proxy-in-less-than-100-lines-of-code/。这些代理服务器似乎只是要求远程服务器获取某个 url 地址。
我想构建一个代理服务器,其中包含一个代理池(http/https 代理列表),并且只有一个 IP 地址和一个端口来服务传入请求。当有请求到来时,它会从池中选择一个代理来执行该请求,并返回结果。
例如,我有一个 IP 为“192.168.1.66”的 VPS。我在此 VPS 上启动代理服务器,IP 地址为“127.0.0.1”,端口为“8080”。
然后我可以像下面一样使用这个代理。
import requests
url = 'http://www.google.com'
headers = {
...
}
proxies = {
'http': 'http://192.168.1.66:8080'
}
r = requests.get(url, headers=headers, proxies=proxies)
我见过一些不重要的东西,比如:
from twisted.web import proxy, http
from twisted.internet import reactor
from twisted.python import log
import sys
log.startLogging(sys.stdout)
class ProxyFactory(http.HTTPFactory):
protocol = proxy.Proxy
reactor.listenTCP(8080, ProxyFactory())
reactor.run()
它可以工作,但它太简单了,我不知道它是如何工作的以及如何改进此代码以使用代理池。
一个示例流程:
from hidu/代理管理器 https://github.com/hidu/proxy-manager,由 golang 编写。
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ client (want visit http://www.baidu.com/) +
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
| via proxy 127.0.0.1:8090
|
V
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ + proxy pool +
+ proxy manager listen ++++++++++++++++++++++++++++++++++
+ on (127.0.0.1:8090) + http_proxy1,http_proxy2, +
+ + socks5_proxy1,socks5_proxy2 +
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
| choose one proxy visit
| www.baidu.com
|
V
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ site:www.baidu.com +
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++