拾捌-NodeJS簡(jiǎn)單代理池(轉(zhuǎn))

1.緣起

原本的架構(gòu)介紹如下:
拾肆-NodeJS簡(jiǎn)單代理池(起)

然后今天為了做其他需要把這個(gè)完善一下。

2.配置文件

原本就沒用 ini配置文件存儲(chǔ)方式,所以就用一個(gè) JSON 文件存儲(chǔ)配置,其中代碼如下:

/**
 *讀取配置文件并初始化。
 */
function funInit() {
    //讀取配置文件
    let strConfig = fs.readFileSync(path.join(__dirname, '/cfg.json'), { encoding: "utf-8" });
    //文本轉(zhuǎn)為對(duì)象
    let objConfig = JSON.parse(strConfig);
    //應(yīng)用各種配置
    let arrSaveSet = objConfig.saveSet;
    let objWebCfg = objConfig.webCfg;
    objCTLIO = new cControllerIO(arrSaveSet);
    objCTSpy = new cControllerRequest(objWebCfg);
    objTimeConfig = objConfig.timeConfig;
    console.log(' 完成初始化 ');
    funGoPro();
};

JSON 有一個(gè)壞處,就是無法注釋,只能增加多一個(gè)字段作為注釋。

//原本為:
"saveSet": [{
  "libPath": "/IOEng/cIOMongodb.js",
  "dbName": "dbProxy",
  "host": "27017",
  "user": "Berry",
  "pw": "Berry",
  "col": "tbProxy"
}, {
  "libPath": "/IOEng //cIOJSON.js",
  "file": "../../proxy.json"
}]

//新增一字段,把內(nèi)容寫到該內(nèi)容里面并作為字符改為:
"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.保存時(shí)加入時(shí)間

原本保存的內(nèi)容只有兩個(gè)內(nèi)容:

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

現(xiàn)在需要增加保存時(shí)間為:

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

4.修改檢測(cè)數(shù)據(jù)庫(kù)是否存在該代理

因?yàn)榍捌诖嫒?code>數(shù)據(jù)庫(kù)只存入代理地址代理端口,故在新增字段之后是會(huì)檢測(cè)不到存在的,所以只能修改為查找數(shù)據(jù)庫(kù)時(shí)只查找地址以及端口,以針對(duì) MongoDB驅(qū)動(dòng)為例,修改一下:

//修改前
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.修改循環(huán)流程

原本的流程圖為:

原始的流程圖

更改后的流程圖:


好像很復(fù)雜

6.修改這個(gè)算是完成了吧

測(cè)試好像還需要一段時(shí)間,就先整理一下今天要做的事情:

  • 把前期做的代理池修改一下
  • 在騰訊云服務(wù)器上配置PM2
  • 找尋 Python 爬蟲相關(guān)包及方法
  • 思考關(guān)鍵字輿情該怎么保存
  • 吃個(gè)好早餐
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 點(diǎn)擊查看原文 Web SDK 開發(fā)手冊(cè) SDK 概述 網(wǎng)易云信 SDK 為 Web 應(yīng)用提供一個(gè)完善的 IM 系統(tǒng)...
    layjoy閱讀 14,450評(píng)論 0 15
  • 白鍵52個(gè),黑鍵36個(gè),一共88個(gè),連著的二個(gè)黑鍵左邊的唱刀,1號(hào)的音名叫c,CDEFGAB這樣的順序,每7個(gè)是一...
    Hi_張閱讀 94評(píng)論 0 0
  • 有人已經(jīng)起跑,有人慢慢溜達(dá),有人起點(diǎn)張望,你怎么對(duì)待你的時(shí)間,你的時(shí)間會(huì)復(fù)利給你,好的壞的自己承擔(dān),快要淹死的人說...
    嘯兒的天空閱讀 682評(píng)論 0 1
  • 2017年已經(jīng)過去,回首2017,往事如煙,反思自己這一年,只記得自己很忙,忙什么?不知道,因?yàn)楦杏X自己什么都沒有...
    ijava閱讀 677評(píng)論 0 5
  • 圖文無關(guān) 面掩春花后 情話輾轉(zhuǎn)未出口 風(fēng)吹池水皺 大概講的就是羞澀的少女情話醞釀半天卻沒有勇氣說出口 怕心意被發(fā)現(xiàn)...
    劣疏閱讀 293評(píng)論 0 3

友情鏈接更多精彩內(nèi)容