【发布时间】:2022-01-08 15:20:13
【问题描述】:
我正在使用 Cloduscraper Python 库从 url 获取 JSON 响应。 问题是我必须重试相同的请求 2-3 次才能获得正确的输出。第一个响应有一个 403 HTTP 状态码。
这是我的代码:
import json
from time import sleep
import cloudscraper
url = "https://www.endpoint.com/api/"
headers = {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:95.0) Gecko/20100101 Firefox/95.0",
"Accept": "*/*",
"Content-Type": "application/json"
}
json_response = 0
while json_response == 0:
try:
scraper = cloudscraper.create_scraper()
r = scraper.get(url, headers=headers)
json_response = json.loads(r.text)
except:
print(r.status_code)
sleep(2)
return json_response
我可以做些什么来优化我的代码并防止 403 响应?
【问题讨论】:
-
cloudscraper 代码库已经有一段时间没有更新了,我不确定目前是否支持它。
-
这是我 wrote 绕过受 Cloudflare 保护的站点时的内容。这项任务需要付出努力,而且大多数 Python 包很快就会过时,因为供应商会缓解这些绕过技术。
-
@Lifeiscomplex 感谢您报告的所有信息。不幸的是 cfscrape 在我的情况下不起作用。 Selenium 比 cloudcraper 慢很多,可能是因为我不能使用“headless”选项或者我得到 403。因此,是否有支持绕过 cloudflare 的库?
-
我查看了 cloudcraper 的 Github 帐户。我注意到他们有一个development branch,最近一次更新了 3 个月。将此存储库克隆到您的系统,以测试它是否适用于您要抓取的站点。
-
@Lifeiscomplex 谢谢你的建议;我尝试了 cloudcraper 的开发版本,但它作为主版本执行
标签: python web-scraping cloudflare