首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Web抓取访问被拒绝|限制访问的Cloudflare

Web抓取访问被拒绝|限制访问的Cloudflare
EN

Stack Overflow用户
提问于 2021-05-08 14:56:04
回答 2查看 2.7K关注 0票数 0

我正在尝试使用python脚本访问和获取来自www.cclonline.com网站的数据。这就是代码。

代码语言:javascript
运行
复制
import requests
from requests_html import HTML

source = requests.get('https://www.cclonline.com/category/409/PC-Components/Graphics-Cards/')
html = HTML(html=source.text)
print(source.status_code)
print(html.text)

这是我得到的错误,

代码语言:javascript
运行
复制
403
Access denied | www.cclonline.com used Cloudflare to restrict access
Please enable cookies.
Error 1020
Ray ID: 64c0c2f1ccb5d781 • 2021-05-08 06:51:46 UTC
Access denied
What happened?
This website is using a security service to protect itself from online attacks.

我该如何解决这个问题?谢谢。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-05-08 15:28:23

因此,该网站的robots.txt并没有明确表示不允许使用机器人。但是你需要让你的请求看起来像是来自一个真正的浏览器。现在来解决手头的问题。响应显示您需要启用cookies。所以这可以通过使用像selenium这样的无头浏览器来解决。Selenium拥有浏览器必须提供的所有功能(它基本上使用google chrome或您选择的浏览器作为驱动程序)。它将使服务器认为请求来自实际的浏览器,并将返回响应。

了解有关如何使用selenium抓取here的更多信息。

还要记住相应地调整抓取时间。在每次请求后暂停,并经常交换用户代理。

票数 1
EN

Stack Overflow用户

发布于 2021-11-16 09:52:47

我在抓取一个电子商务网站时遇到了同样的问题。显然,CloudFlare会分析请求的TLS指纹,并抛出403 (1020)代码,以防指纹与通常用于抓取的node.js/python/curl匹配。解决方案是模仿一些流行浏览器的指纹--最明显的方法是在puppeteer extra stealth plugin中使用Puppeteer.js。但是..。由于Puppeteer对于我的用例来说还不够快(我说得比较温和..我不得不构建一个类似curl的实用程序,它使用boringSSL -由于编译C/C++代码并找出一些TLS库的隐秘编译错误对于大多数web开发人员来说并不有趣--我将它包装为一个应用程序接口服务器,您可以在这里尝试:https://rapidapi.com/restyler/api/scrapeninja

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67444887

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档