Fork me on GitHub

Sfiypig's notes

没有记录等于没有发生

本科毕业设计Ease-Monitor

Ease-Monitor是本人大学在毕业前尝试编写的一个分布式监控系统,目的是从开发的角度去了解一个监控系统的方方面面(实际上我只解决的一小部分问题-_-!),所以还是仅供学习使用

其主要包含了数据采集、数据转发、数据存储、异常判定及告警、数据可视化五个功能模块。其架构图如下:

Alt text

其后端完全使用Python实现,前端的数据可视化和平台管理基于Vue.js实现

后端项目地址

前端项目地址

使用Docker部署scrapy-redis分布式爬虫

引言

在上篇使用Scrapy爬取知乎用户信息我们编写了一个单机的爬虫,这篇记录了使用Scrapy-Redis将其重写,使其具备分布式抓取的能力,并使用Docker部署到我们两台云server

为什么要分布式,显然单机的爬虫无论在机器的带宽还是ip等在爬取的时候都会有一定的限制,为了提高我们爬取的效率,我们需要编写一个可以在多台机器上同时运行的爬虫,在其爬取状态同步的同时,对我们想要的信息进行爬取。而Scrapy-Redisgithub上的一个开源项目。

为什么使用Docker,说到Docker可能很多人老早就听说过其在江湖上的传说,在我写这篇文章之前,也仅仅是对其有个模糊的了解,但是我昨天晚上在部署我的Project到我的两台服务器上的时候,我被基础环境的配置给弄疯了,之前我在阿里云服务器上安装了Py3,勉强可以支撑我之前的需求。

但是昨晚在安装Scrapy的时候,为了装一个Package,我几乎要把Py3、OpenSSL等组件重新安装一遍,在痛苦的挣扎之后,我想到了Docker(也许是瞄到了官方的例子中的Dockerfile),果不其然简单的google下就看到了大量的部署Scrapy的案例。

简单的看了下官方文档,没一会就将我的项目部署到了两台服务器上并正常运行,这太惊艳了!

使用淘宝IP库为智能DNS收集中国ISP信息

题记:2017第一弹~

简介

本站是先收集了中国所有的公有IP地址段,众所周知中国的IP地址是由APNIC(亚太网络信息中心)分配的,APNIC专门负责亚洲和太平洋地区的IP地址和AS号分配,受到 IANA(互联网地址分配机构) 的管理。所以本站先从http://ftp.apnic.net/apnic/stats/apnic/delegated-apnic-latest下载到本地作为src.html
这里将所有的中国公网IP地址信息都进行提取过滤

具体生成器函数如下:

1
2
3
4
5
6
7
8
9
10
def net_catch():
with open('src.html', 'r') as f:
for line in f:
if line.startswith('apnic|CN|ipv4'):
'''
the line example:
apnic|IN|ipv4|103.27.84.0|1024|20130701|assigned
'''
net,cnt = line.strip().split('|')[3:5]
yield net,int(32-log(float(cnt))/log(2))

src.html里面包含了世界上所有的公网网段地址,形如:

1
2
3
4
5
6
apnic|LK|ipv4|203.189.184.0|2048|20060515|allocated
apnic|CN|ipv4|203.189.192.0|8192|20110412|allocated
apnic|BD|ipv4|203.189.224.0|2048|20000111|allocated
apnic|CN|ipv4|203.189.232.0|1024|20151113|allocated
apnic|CN|ipv4|203.189.236.0|1024|20151113|allocated
apnic|CN|ipv4|203.189.240.0|1024|20151113|allocated

上述条目由如下字段构成:

分配机构 | 国家代码|ip版本| 网段 | 包含ip地址数量 | 分配时间 | 状态

我们只需要找到所有以apnic|CN|ipv4开始的行,并以int(32-log(float(cnt))/log(2)这个计算网段的掩码即可,并生成网段地址和掩码