Contents
  1. 1. 引子
  2. 2. 项目依赖
  3. 3. 项目结构
  4. 4. 安装教程
  5. 5. 总结

为了给我的站点增加人气,我把这个项目的介绍放到我的博客,如果你觉得这个项目还不错的话,请不要吝啬你的star

github传送门
Demo传送门

引子

一开始自己只想做一个代理池,于是搜了搜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是并行参数,值越大速度越快

c是检测ip头网址,可以使用我提供的 http://115.159.146.115/ip 返回请求头,可以参考我的上一篇博文 代理的前世今生

在我搭建的DEMO站点上,我使用supervisor让这三个程序循环运行,你可以使用crontab定时调度也可以像我一样。

数据库当前采用的Sqlite3,但是数据库模型全部使用ORM开发,你可以很方便的修改settings.py来放入其他数据库,如果你懂一点Django的话

总结

如果你像了解更多开发这个项目背后的知识的话,可以看看我上一篇博文 代理的前世今生

Contents
  1. 1. 引子
  2. 2. 项目依赖
  3. 3. 项目结构
  4. 4. 安装教程
  5. 5. 总结