用 scrapy 抓取两个月后得到 403

Getting 403 after two months scraping with scrapy

我正在抓取技术组件的网页并获取结果以供稍后比较。对于这个任务,我正在使用 Scrapy 和 Python。抓取网页两个月后,我收到 403 状态错误。我尝试改变:

  1. 机器人名称
  2. 具有一些不同代理的用户代理
  3. 从我朋友的电脑启动抓取工具
  4. 我试过在不同的 IP 下启动爬虫
  5. 3 和 4 在一起

这五个步骤让我觉得他们有关于我的爬虫的信息,而不是关于我的电脑的信息,他们已经阻止了我的机器人。 这不是第一次发生。他们一个月前屏蔽了我的机器人,一周后又解除了对同一个机器人的屏蔽。

我正在寻找新的想法,因为论坛和抓取网站上的每个人都建议更改用户代理。

我尝试使用以下代码提出一个简单的请求:

import request
 
url = 'https://www.webwithcloudflareprotection.com/'

headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:89.0) Gecko/20100101 Firefox/89.0'
    }

r = requests.get(url, headers=headers)
print(r.status_code)

此代码在我尝试启动它的每个 IP 中总是得到 403。这很奇怪。有人告诉我有关 Cloudfare 的信息,但我不知道如何检查该软件是否支持这一切。

尝试转到浏览器并发出您的机器人所做的请求。如果请求未被拒绝,请进入开发者工具并从您的浏览器复制 User-Agent header。

此外,这里有一些与您的问题类似的问题: HTTP error 403 in Python 3 Web Scraping

我解决了这个整合Selenium和Scrapy的问题。 问题出在 cloudflare 保护中,因此 VPN、代理或用户代理无法解决任何问题。

解决方案是使用 Selenium 模仿浏览器并获取 HTML 来提取信息。

最后,问题出在我的机器和他们自己的IP之间的第三方软件。我找到了避免将 scrappy 与 Selenium 和 chrome 驱动程序集成的方法。

这可能不是最好的解决方案,但它确实有效。性能较慢但结果相同!