我过去偶尔会爬取电子商务网页以获取产品价格信息。我有一段时间没有使用过使用Scrapy构建的刮板,昨天却尝试使用它-我遇到了机器人防护的问题。

它使用的是CloudFlare的DDOS保护,基本上是使用JavaScript评估功能来过滤掉禁用JS的浏览器(因此是抓取器)。评估功能后,将生成带有计算数字的响应。作为返回,服务会发回两个身份验证Cookie,这些身份验证Cookie附加到每个请求中,从而可以正常爬网该站点。 Here对其工作方式的描述。

我还发现了一个cloudflare-scrape Python模块,该模块使用外部JS评估引擎来计算数字并将请求发送回服务器。我不确定如何将其集成到Scrapy中。还是有一种不使用JS执行的更聪明的方法?最后是表格

我会提供任何帮助。

最佳答案

所以我在cloudflare-scrape的帮助下使用Python执行了JavaScript。

在刮板中,您需要添加以下代码:

def start_requests(self):
  for url in self.start_urls:
    token, agent = cfscrape.get_tokens(url, 'Your prefarable user agent, _optional_')
    yield Request(url=url, cookies=token, headers={'User-Agent': agent})

以及解析功能。就是这样!

当然,您需要先安装cloudflare-scrape并将其导入到Spider。您还需要安装JS执行引擎。我已经有了Node.JS,没有怨言。

关于javascript - 如何在Scrapy中绕过cloudflare bot/ddos​​保护?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33247662/

10-11 23:52