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

f8rj6qna  于 2022-11-09  发布在  其他
关注(0)|答案(3)|浏览(280)

我曾经偶尔刮电子商务网页,以获得产品价格信息。我已经有一段时间没有使用使用 Scrapy 构建的刮擦器,昨天尝试使用它-我遇到了bot保护问题。
它使用CloudFlare的DDOS保护,基本上是使用JavaScript评估来过滤掉浏览器(因此scraper),并禁用JS。一旦函数被评估,响应与计算数字被生成。作为回报,服务发送回两个认证cookie,附加到每个请求允许正常爬网的网站。Here的工作原理的描述。
我还发现了一个cloudflare-scrape Python模块,它使用外部JS求值引擎来计算数字并将请求发送回服务器。但我不知道如何将其集成到Scrapy中。或者有一个更聪明的方法不使用JS执行?最终,它是一个表单...
我很感激你的帮助。

elcex8rz

elcex8rz1#

因此,我在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-scrap,然后导入到你的spider中。你还需要安装一个JS执行引擎。我已经有了Node.JS,没有抱怨。

3b6akqbq

3b6akqbq2#

显然,最好的办法是将您的IP列入CloudFlare的白名单;如果这不合适,我推荐cloudflare-scrape库。你可以用它来获取cookie标记,然后在你的Scrapy request中提供这个cookie标记给服务器。

yc0p9oo0

yc0p9oo03#

如果您收到503错误,您可以遵循以下准则:
1.转到settings.py
1.搜寻:USER_AGENT
1.在这里你会看到默认的bot用户代理由scrappy提供。用以下代码替换默认设置:

USER_AGENT = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.116 Safari/537.36'

相关问题