首页 > 解决方案 > 无法通过“403 - 禁止” Python Webscraping - 尝试更改标题

问题描述

我正在尝试抓取一个网站,尽管我可以使用 Chrome 在我的计算机上访问该网站,但无论我在 python 中尝试什么,我都会不断收到状态码 403 - 禁止。我已经尝试过在我的请求中使用用户代理以及各种网络标头组合。但我仍然不断收到这个问题。

import requests
headers={'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8',
         'Accept-Encoding': 'gzip, deflate',
         'Accept-Language': 'en-US,en;q=0.5',
         'Referer': 'https://duckduckgo.com/',
         'TE':'trailers',
         'Upgrade-Insecure-Requests':'1',
         'USER-AGENT':'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:81.0) Gecko/20100101 Firefox/81.0',
         'X-Real-Ip': '[insert IP]',
         'X-Http-Proto': 'HTTP/1.1',
        'Host': 'curseforge.com'}

url = 'https://www.curseforge.com/minecraft/modpacks?page=2'
req = requests.get(url, headers=headers)

print(req.status_code)

输出:403

我现在只想打开一个chrome浏览器,然后从chrome本身的inspect元素中提取......

有任何想法吗?

谢谢!

标签: python

解决方案


对不起,你在这里不走运。由于https://www.curseforge.com受 Cloudfare 保护,我尝试在使用使用cloudfare-scrap库的情况下运行您的脚本。

但是两次我都得到了Completing the CAPTCHA proves you are a human and gives you temporary access to the web property.,因为 Cloudfare 和 reCAPTCHA 在防止像你这样的 DDoS 和爬虫方面做得非常出色,所以它们很难绕过。但是我确实想出了一些解决方案来破解它,尽管要知道这些都不是完美的

  1. 你可以打破谷歌 reCAPTCHA,更多数据在这里Blackhat Conference 2016

  2. 您可以提取 reCAPTCHA 在传递时提供给您的临时 cookie,并每次将其注入您的请求中。但请注意此方法,因为对同一页面的过多请求会使您的主机产生怀疑,并且可能会撤销您的 cookie,您将不得不再次刷新它。

  3. 最后,您可以尝试替代方法并使用 selenium 打开浏览器驱动程序以进行手动 reCAPTCHA 输入。


推荐阅读