我正在使用 node.io 来构建一个网络爬虫,但是在寻找方法的过程中,我已经提出了很多要求,这个网站已经阻止了我。我不知道如何添加代理,例如使用 Tor 向该站点发出请求。
3 回答
我安装了tor和polipo。Polipo 连接到 Tor 和 Node.IO 将使用 http 代理 polipo 提供。这似乎比我想的要简单。并为刮刀设置代理
var scrap = new Scraper({
start: 0,
limit: 5,
count: null,
max: config.max || 0,
debug: true,
wait: 3,
proxy: 'http://127.0.0.1:8123'
});
它工作正常。
apt-get 安装 Tor
npm install tor-request --or-- yarn add tor-request
我们真的需要看看这是什么类型的网站,为什么要抓取它,理想情况下它是什么具体的网站,以便提供建议。你知道你为什么被屏蔽吗?
我的第一个想法是你爬网站的速度太快了,因为这个原因你被合法地屏蔽了。如果您的业务仅依赖于一个网站的抓取(例如来自 eBay 的价格),那么您需要在每次点击之间延迟几秒钟。
我倾向于认为,如果网站运营商愿意,他们完全有权阻止特定的抓取工具。然而,这种观点可能会受到“共同利益”概念的影响,例如减少部分垄断的影响。例如,我认识一个曾经从特定行业的网站上抓取价格,然后重新格式化并转售这些数据的人。该数据的效果是使整个行业更具竞争力并降低消费者的价格。
因此,其中一个目标站点决定阻止爬虫。反对他们的资源被消耗而没有销售机会,还是因为他们不喜欢机器人的竞争效应?很难说 - 可能两者兼而有之。刮刀现在已被人工取代——人工操作成本更高,但无论如何都能获取数据。
因此,使用代理存在潜在的争论,但在大多数情况下,我认为它们不是一个好主意。例如,如果您打算获取某人的新闻文章并在其他地方重新显示它们而不增加任何价值,那么您当然应该被阻止。然而,在哪里划清界限是很复杂的。
相关:我在这里的回答提供了一些关于如何抓取的建议,包括关于避免代理和拥有易于阻止的用户代理的一般建议。也许这可能有用?