如何在Scrapy中绕过cloudflare bot/ddos保护?

2024-05-18 17:51:32 发布

您现在位置:Python中文网/ 问答频道 /正文

我曾经偶尔刮电子商务的网页来获取产品价格信息。我已经有一段时间没有使用过使用Scrapy构建的scraper了,昨天我试图使用它-我遇到了一个机器人保护的问题。

它使用的是CloudFlare的DDOS保护,它基本上是使用JavaScript评估过滤掉禁用JS的浏览器(因此是scraper)。一旦对函数求值,就会生成带有计算数的响应。作为回报,服务发送回两个附加到每个请求的身份验证cookie,允许正常地对站点进行爬网。Here是对它工作原理的描述。

我还发现了一个cloudflare-scrapePython模块,它使用外部JS评估引擎计算数字并将请求发送回服务器。但我不知道如何将其集成到Scrapy中。或者不使用JS执行有更聪明的方法吗?最后,这是一种形式。。。

我不需要任何帮助。


Tags: 函数身份验证信息网页cookiejs机器人浏览器
2条回答

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

在scraper中,需要添加以下代码:

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了,没有抱怨。

显然,最好的方法是在CloudFlare中白名单您的IP;如果这不合适,让我推荐cloudflare-scrape库。您可以使用它来获取cookie令牌,然后在Scrapy request中将此cookie令牌提供回服务器。

相关问题 更多 >

    热门问题