node.js - perangkak nod, bagaimana untuk menggunakan kolam IP untuk mengelakkan anti-merangkak?
为情所困
为情所困 2017-06-05 11:13:33
0
1
1223

Masalahnya ialah ini saya seorang pemula yang baru mula belajar nod. Kemudian saya sedang membaca novel baru-baru ini, tetapi terdapat terlalu banyak iklan di tapak web novel percuma tersebut, jadi saya bercadang untuk menulis perangkak untuk merangkak ke bawah keseluruhan novel, tetapi bilangan permintaan url terlalu kerap, supaya ia akan menjadi terbalik -merangkak dan disekat. Saya cuba meningkatkan selang permintaan untuk mengelakkannya, tetapi saya tidak menemui apa-apa kesan secara tidak sengaja saya mendapati bahawa saya boleh menukar alamat IP untuk mengelakkannya , jadi saya datang ke sini untuk bertanya kepada yang pakar Jika anda tahu apa-apa, boleh kongsikan sekejap, terima kasih ya Allah.

Saya ingin menekankan bahawa masalahnya ialah bagaimana menukar IP nod untuk mengelakkan anti pendakian

Rangka kerja yang digunakan termasuk superagent, cheerio, async...Terima kasih ya Allah.
Kod:

var superagent = require('superagent');
var cheerio = require('cheerio');
var file = require('./writeText.js');
require('superagent-charset')(superagent);

var str = '';
var count = 150;

var fetchUrl = function (url, callback, len) {
  count++;
  getArticle(url, callback, len);
}

function getArticle (url, callback, len) {
  superagent.get(url)// 'http://m.kanshuzw.com/4/4201/'
  .proxy(proxy)
  .charset('gbk')
  .end(function (err, sres) {
    if (err) {
      return console.error(err);
    } else {
      var $ = cheerio.load(sres.text);
      file.writeFile($('#nr_title').text() + '\n' + $('#nr').text(), 'C:\Users\Administrator\Desktop\nodeTextTest\writeFileTest-' + count + '.txt');
      $('.nr_page .dise').each(function (idx, element) {
        var $element = $(element);
        if ($element.text() === '下一页') {
          superagent.get('http://m.kanshuzw.com' + $element.attr('href'))
          .set("X-Forwarded-For", ip)
          .proxy(proxy)
          .charset('gbk')
          .end(function (err, sres) {
            if (err) {
              console.log('2 error end.');
              return console.error(err);
            }
            var $ = cheerio.load(sres.text);
            file.appendFile($('#nr_title').text() + '\n' + $('#nr').text(), 'C:\Users\Administrator.lic-PC\Desktop\nodeTextTest\writeFileTest-' + count + '.txt');
            console.log('progress: ' + count + '/' + len);
            callback(null, url + ' html content');
          });
        } else if ((idx + 1) === $('.nr_page .dise').length) {
          console.log('progress: ' + count + '/' + len);
          callback(null, url + ' html content');

        }
      });
    }
  })
}


Menunggu tuhan yang agung

为情所困
为情所困

membalas semua(1)
小葫芦

Anti-merangkak bermakna program kawalan tidak boleh menggunakan satu alamat IP untuk merangkak tapak web yang sama beberapa kali pada kekerapan yang sangat pantas Kini terdapat kumpulan IP, program ini boleh menggunakan berbilang IP untuk memulakan permintaan. Dalam kes ini, Perkara yang anda lakukan adalah dengan kerap menukar IP yang digunakan oleh program Contohnya, mengikut kekerapan merangkak anda, setengah jam atau setengah hari, atau lebih lama ialah selang masa IP untuk program perangkak Berikut ialah pautan, Agen nod, mungkin berguna/q/10...

Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan