#code

目录结构
```
│  app.js	//处理路由和异常捕捉
│  common.js	//配置环境config
│  index.js		//多进程启动
│
├─bin
│  │  checkProxyPool.js		//从redis代理池中拿出ip直接请求某个网址，如果失效则删除
│  │  checkZombieChrome.js	//使用headless浏览器模式会出现很多僵尸chrome进程，用此脚本杀死
│  │  checkZombieSpider.js	//检查所有crawlworker并记录到表proc_log，并且杀死proc_log中运行太久的僵尸程序
│  │  crawl.js		//获取浏览器模式和普通模式的规则然后进行任务
│  │  crawlMaster.js 	//抓取任务的master分配入redis队列
│  │  crawlWorker.js	//从redis获取抓取任务
│  │  fetchPage.js		
│  │  test.js
│  │
│  ├─linux_bash
│  │      crontab.sh
│  │      supervisor.ini
│  │
│  └─NameClient
│          subNsEvent.js
│
├─conf	//配置目录
│  │  code.inc.js
│  │  config.dev.inc.js
│  │  config.form.inc.js
│  │  config.inc.js
│  │  r2m_config.inc.js
│  │
│  └─conf_ns	//名字服务器配置
│          config.code.inc.js
│          config.globals.inc.js
│          config.r2m.inc.js
│          config.shop.inc.js
│
├─controllers	//爬虫开放的api，用于预览爬取获取页面和网页上执行任务查看任务执行情况
│      DefaultController.js
│
├─extensions
│      function_extend.js
│
├─models
│      AmcMsg.js	//爬虫爬取报警上报
│      Browser.js	//headless浏览器模式下的浏览器类
│      JTool.js		//选择器使用的类工具，例如格式化时间等
│      MapData.js	//名字服务中配置的数据库表内字段的操作类
│      ProxyPool.js		//代理池类
│      Spider.js	//爬虫类，非常重要，包含了爬取过程中的一系列函数
│
└─views
    │  doc.ejs
    │  error.ejs
    │  index.ejs
    │
    └─name_server
            js.ejs
```

---
#系统示意图
![图片](/img/图1-2.jpg)

#请求代理示意图
![图片](/img/图1-1.jpg)

#可视化流程示意图
![图片](/img/图1-3.jpg)