跳过正文
  1. 开源/

FastProxyScan项目介绍

·3 分钟· ·
OpenSource
目录
mrzhangboss/FastProxyScan

fast proxy scan project

Python
8
2

为了给我的站点增加人气,我把这个项目的介绍放到我的博客,如果你觉得这个项目还不错的话,请不要吝啬你的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是并行参数,值越大速度越快

  • 代理检测

    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的话

总结
#

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

相关文章

hookman develpment blog
·3 分钟
OpenSource
其实写这个项目的初衷是想实践一下TDD开发,因为自己刚看完一本<<Test-Driven Development with Python>>,以前只是了解一点开发测试,看完这本书感觉这种敏捷开发方式非常适合我,自己完整写过一些小项目,但是大项目经常由于各种代码框架,代码规模搞得最后成了烂项目,而且关于TTD一些建议比如YAGNI(You ain't gonna need it)(你不需要这个)对于你对项目的规模有一定的控制.写这篇博客一方面将我开发hookman 的TDD开发经历告诉大家,一方面希望更多人了解TDD开发,换一种开发方式,或许能让你找回编程的乐趣.
hookman development notebook
·1 分钟
OpenSource
mrzhangboss/hookman
大学的错觉
·4 分钟
随笔 人生
其实这篇文章很早就像写了,但是自己也一直没有明白自己想写什么,直到最近自己慢慢才有一点思路
代理的前世今生
·5 分钟
后端 网络
引言 # 自己对代理认识不深,也只是会使用而已,由于最近想做一个代理池,于是查了很多资料,发现代理这个东西还是非常有趣的
编程小结
·5 分钟
随笔 人生
引言 # 编程开发有时候也像雕刻一件艺术品
HTTP复用
·10 分钟
后端 网络
曾经有人问过我一个问题什么是TCP复用,我当时没有回答上来,后面我又遇到一些并发性能问题的时候,我才开始慢慢明白为什么会有这个问题,以及这个问题背后的秘密