ProxyBroker
ProxyBroker是一个开源工具,可以从多个来源异步查找公共代理并同时检查它们。
特点
- 查找来自约50个来源的7000多个代理服务器。
- 支持协议:HTTP(S),SOCKS4 / 5。将CONNECT方法连接到端口80和23(SMTP)。
- 代理可能会根据类型,匿名级别,响应时间,国家和DNSBL中的状态进行过滤。
- 作为代理服务器,将传入请求分发给外部代理。自动代理旋转。
- 所有代理都被检查以支持Cookies和Referer(如果需要的话,POST请求)。
- 自动删除重复的代理。
- 是异步的。
要求
- Python 3.5或更高版本
- aiohttp
- aiodns
- maxminddb
安装
从pypi安装最新的稳定版本:
$ pip安装proxybroker
最新的开发版本可以直接从GitHub安装:
$ pip install -U git + https://github.com/constverum/ProxyBroker.git
用法
CLI示例
寻找
查找并显示来自美国的10个HTTP(S)代理,具有很高的匿名性:
$ proxybroker find --types HTTP HTTPS --lvl High --countries US --strict -l 10
抓住
查找并保存到一个文件10个美国代理(没有支票):
$ proxybroker grab --countries US --limit 10 --outfile ./proxies.txt
服务
运行本地代理服务器,该服务器将传入请求分发到具有高匿名级别的已发现HTTP(S)代理池中:
$ proxybroker serve --host 127.0.0.1 --port 8888 --types HTTP HTTPS --lvl高
注意
运行有关可用选项的更多信息。proxybroker --help
运行以获取有关命令的更多信息。proxybroker <command> --help
基本代码示例
查找并显示10个正常工作的HTTP(S)代理:
import asyncio from proxybroker import Broker async def show(proxies): while True: proxy = await proxies.get() if proxy is None: break print(Found proxy: %s % proxy) proxies = asyncio.Queue() broker = Broker(proxies) tasks = asyncio.gather( broker.find(types=[HTTP, HTTPS], limit=10), show(proxies)) loop = asyncio.get_event_loop() loop.run_until_complete(tasks)
更多例子。
TODO
- 检查ping,响应时间和数据传输速度
- 检查网站访问权限(谷歌,推特等),甚至您自己的自定义网址
- 正常运行时间信息
- 返回数据的校验和
- 支持代理验证
- 为级联代理查找传出IP
- 能够指定没有端口的代理的地址(尝试在默认端口上连接)
贡献
- 把它叉起来:https://github.com/constverum/ProxyBroker/fork
- 创建你的特性分支:git checkout -b my-new-feature
- 提交您的更改:git commit -am’添加一些功能’
- 推到分支:git push origin my-new-feature
- 提交拉请求!
许可证
根据Apache许可证版本2.0获得许可
本产品包含由MaxMind创建的GeoLite2数据,可从 http://www.maxmind.com获取。