代理查找与测试工具
ProxyBroker是一个开源工具,能够异步从不同来源查找公共代理并同时进行验证。

主要特点
- 能够找到超过7000个代理服务器,来源约50个。
- 支持的协议包括HTTP(S)和SOCKS4/5,并且可以将CONNECT方法用于端口80和23(SMTP)。
- 可以根据类型、匿名级别、响应时间、国家和DNSBL状态进行代理过滤。
- 作为代理服务器,能够将传入请求分发给外部代理,并自动旋转代理。
- 所有代理都会被检查以支持Cookies和Referer(如有需要,支持POST请求)。
- 自动去除重复的代理。
- 具备异步处理能力。
系统要求
- Python 3.5或更高版本
- aiohttp
- aiodns
- maxminddb
安装方法
可以通过pypi安装最新的稳定版本:
$ pip install proxybroker
最新的开发版本可以通过GitHub直接安装:
$ pip install -U git+https://github.com/constverum/ProxyBroker.git
使用示例
命令行示例
查找代理
查找并显示来自美国的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 High

注意
获取可用选项的更多信息,请运行: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)
更多示例可查阅。
待办事项
- 检查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。
