美文网首页Node.js
拾捌-NodeJS简单代理池(转)

拾捌-NodeJS简单代理池(转)

作者: 小秉子 | 来源:发表于2020-01-29 20:54 被阅读0次

    1.缘起

    原本的架构介绍如下:
    拾肆-NodeJS简单代理池(起)

    然后今天为了做其他需要把这个完善一下。

    2.配置文件

    原本就没用 ini配置文件存储方式,所以就用一个 JSON 文件存储配置,其中代码如下:

    /**
     *读取配置文件并初始化。
     */
    function funInit() {
        //读取配置文件
        let strConfig = fs.readFileSync(path.join(__dirname, '/cfg.json'), { encoding: "utf-8" });
        //文本转为对象
        let objConfig = JSON.parse(strConfig);
        //应用各种配置
        let arrSaveSet = objConfig.saveSet;
        let objWebCfg = objConfig.webCfg;
        objCTLIO = new cControllerIO(arrSaveSet);
        objCTSpy = new cControllerRequest(objWebCfg);
        objTimeConfig = objConfig.timeConfig;
        console.log(' 完成初始化 ');
        funGoPro();
    };
    

    JSON 有一个坏处,就是无法注释,只能增加多一个字段作为注释。

    //原本为:
    "saveSet": [{
      "libPath": "/IOEng/cIOMongodb.js",
      "dbName": "dbProxy",
      "host": "27017",
      "user": "Berry",
      "pw": "Berry",
      "col": "tbProxy"
    }, {
      "libPath": "/IOEng //cIOJSON.js",
      "file": "../../proxy.json"
    }]
    
    //新增一字段,把内容写到该内容里面并作为字符改为:
    "saveSet": [{
      "libPath": "/IOEng/cIOMongodb.js",
      "dbName": "dbProxy",
      "host": "27017",
      "user": "Berry",
      "pw": "Berry",
      "col": "tbProxy"
    }],
    "Comment": {
      "ForsaveSet": ", {'libPath': '/IOEng //cIOJSON.js','file': '../../proxy.json'}"
    }
    

    3.保存时加入时间

    原本保存的内容只有两个内容:

    ProxyContent:[
      {
        u:"119.101.118.126",
        p:"9999"
      }
    ]
    

    现在需要增加保存时间为:

    ProxyContent:[
      {
        u:"119.101.118.126",
        p:"9999",
        ft:1580267620322
      }
    ]
    

    4.修改检测数据库是否存在该代理

    因为前期存入数据库只存入代理地址代理端口,故在新增字段之后是会检测不到存在的,所以只能修改为查找数据库时只查找地址以及端口,以针对 MongoDB驱动为例,修改一下:

    //修改前
    checkProxyExist(objProxy = {}, funCB) {
        ....
          db.collection(that.dbSet.col).findOne(objProxy, {}, function(err, item) {
        ....
        };
    
    //修改后
    checkProxyExist(objProxy = {}, funCB) {
        ....
          db.collection(that.dbSet.col).findOne({ u: objProxy.u, p: objProxy.p }, {}, function(err, item) {
        ....
        };
    

    5.修改循环流程

    原本的流程图为:

    原始的流程图

    更改后的流程图:


    好像很复杂

    6.修改这个算是完成了吧

    测试好像还需要一段时间,就先整理一下今天要做的事情:

    • 把前期做的代理池修改一下
    • 在腾讯云服务器上配置PM2
    • 找寻 Python 爬虫相关包及方法
    • 思考关键字舆情该怎么保存
    • 吃个好早餐

    相关文章

      网友评论

        本文标题:拾捌-NodeJS简单代理池(转)

        本文链接:https://www.haomeiwen.com/subject/ulevthtx.html