首页 > 解决方案 > 网页抓取访问被拒绝 | Cloudflare 限制访问

问题描述

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

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)

这是我得到的错误,

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.

我怎么解决这个问题?谢谢。

标签: pythonweb-scrapingpython-requests

解决方案


我在抓取一个电子商务网站时遇到了同样的问题。显然,CloudFlare 会分析请求的 TLS 指纹并抛出 403 (1020) 代码,以防指纹与通常用于抓取的 node.js/python/curl 匹配。解决方案是模拟一些流行浏览器的指纹 - 最明显的方法是使用 Puppeteer.js 和puppeteer 额外的隐形插件。但是..由于 Puppeteer 对我的用例来说不够快(我说得委婉些。。Puppeteer在资源和迟缓方面很疯狂)我不得不构建一个使用无聊SSL 的类似 curl 的实用程序- 并且因为编译 C/C++ 代码对于大多数 Web 开发人员来说,找出一些 TLS 库的隐蔽编译错误并不好玩——我将它包装成一个 API 服务器,你可以在这里尝试:https://rapidapi.com/restyler/api/scrapeninja


推荐阅读