fast proxy scan project
为了给我的站点增加人气,我把这个项目的介绍放到我的博客,如果你觉得这个项目还不错的话,请不要吝啬你的star
引子 #
一开始自己只想做一个代理池,于是搜了搜Github发现类似的项目,大多数都是爬取网上的一些代理商的免费代理,这部分代理大多都是没有用的,可用性非常低,于是我自己就干脆做一个“代理商”,自己扫描主机把可用的代理扫描出来。
但是现在网络主机实在太多了,至少几百万台,所以这个项目的核心就是快速扫描,在最短的时间内检测更多的代理,目前项目的速度最好只能完成1000代理每小时的速度(日扫描两万代理),希望能继续优化代码,加快速度,如果你对这个项目感兴趣可以Fork下来,欢迎各位的Pull Request
项目依赖 #
项目基于Python3.5+开发
软件依赖
- nmap
项目结构 #
项目主要由三个部分组成
- 主机扫描
- 端口检测
- 代理检查
项目结构为
- proxy_pool
-
- scanner
-
- display
-
- database
现在依次介绍在搜索速度上的优化
- 主机搜索
全球的IP都是有ISP统一分配的,ISP主要由下面几大洲分配,我们中国处于亚太区,所以我们的IP由亚太互联网络信息中心(APNIC)分配IP,目前中国分配的IPV4总数为3亿左右,这个数量还是比较大
我们可以从 http://ftp.apnic.net/apnic/stats/apnic/delegated-apnic-latest下载最新分配的IP地址
但是代理服务器只存在特定的服务器上,所以现在版本还没有发布V1.0主要是因为搜索的效果不是很好(搜索的主机代理转换率太低),目前还在想其他方法,等有更好的解决方法就会发布V1.0
- 端口检测
使用nmap
的“TCP SYN scan”最大化加快端口检测速度(需要root权限)
- 代理检测
使用nmap
先验端口与Python
异步最大化代理检测速率
安装教程 #
项目采用Django做后台管理,所以只需要一点Django基础知识就能在这个项目上做二次开发,如果你只想获取最新的可用代理,可以通过http://115.159.146.115 调用API接口获取最新可用代理(我的站点带宽有限,所以只开放最新100个代理,并且只是20分钟更新一次)
环境安装
- nmap 安装
- python3.5+ 安装
运行:
git clone https://github.com/mrzhangboss/FastProxyScan.git
cd FastProxyScan
python3.5 install -r requirement.txt
-
主机检测
cd pool/proxy_pool sudo python3.5 manage.py scan –vps
-
端口检测
sudo python3.5 manage.py scan –proxy -m 100
m是并行参数,值越大速度越快
-
代理检测
sudo python3.5 manage.py check –start -c http://115.159.146.115/ip
c是检测ip头网址,可以使用我提供的 http://115.159.146.115/ip 返回请求头,可以参考我的上一篇博文 代理的前世今生
在我搭建的DEMO站点上,我使用supervisor让这三个程序循环运行,你可以使用crontab定时调度也可以像我一样。
数据库当前采用的Sqlite3,但是数据库模型全部使用ORM开发,你可以很方便的修改settings.py
来放入其他数据库,如果你懂一点Django的话
总结 #
如果你像了解更多开发这个项目背后的知识的话,可以看看我上一篇博文 代理的前世今生