python - 无法通过“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元素中提取......
有任何想法吗?
谢谢!
解决方案
对不起,你在这里不走运。由于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 和爬虫方面做得非常出色,所以它们很难绕过。但是我确实想出了一些解决方案来破解它,尽管要知道这些都不是完美的
你可以打破谷歌 reCAPTCHA,更多数据在这里Blackhat Conference 2016,
您可以提取 reCAPTCHA 在传递时提供给您的临时 cookie,并每次将其注入您的请求中。但请注意此方法,因为对同一页面的过多请求会使您的主机产生怀疑,并且可能会撤销您的 cookie,您将不得不再次刷新它。
最后,您可以尝试替代方法并使用 selenium 打开浏览器驱动程序以进行手动 reCAPTCHA 输入。
推荐阅读
- ansible - 带有 uri 模块的 Ansible“local_action”发布带有变量的 json 正文
- python - 如何在 gmail 中验证凭据?
- gdb - 从自定义工具生成 valgrind gdb 中断
- c++ - 从 2 位输入输出 4 位年份
- java - 点燃集群不同的启动时间
- javascript - 不能在类的构造函数之外定义变量
- java - 无法在运行时设置 SolrDocument 注释
- c# - C#/Unity3D:带有第一个参数的 CreateDelegate:调用时输入参数的错误更改
- android - 将依赖项迁移到 Android Jetpack
- javascript - 显示 Skype for Business 在线状态