You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

抓取数据遇403错误cloudscraper失效,有什么可行解决办法?

403错误绕过解决方案

你遇到的403错误是站点启用了Cloudflare反爬防护导致的,返回的英文拦截页翻译为:该网站正在使用安全服务保护自身免受网络攻击。

1 修正现有代码错误

你提供的cloudscraper版本代码存在导入调用不匹配问题:导入的是cloudscraper,调用时却用了cfscrape,首先修正为如下代码,同时补充完整请求头字段降低被识别概率:

import cloudscraper

headers = {
    'accept': 'application/json',
    'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0.0.0 Safari/537.36',
    'accept-language': 'zh-CN,zh;q=0.9,en;q=0.8',
    'referer': 'https://www.brownsfashion.com/',
    'sec-ch-ua': '"Chromium";v="124", "Google Chrome";v="124", "Not-A.Brand";v="99"',
    'sec-ch-ua-mobile': '?0',
    'sec-ch-ua-platform': '"Windows"',
    'sec-fetch-dest': 'empty',
    'sec-fetch-mode': 'cors',
    'sec-fetch-site': 'same-origin'
}

scraper = cloudscraper.create_scraper(delay=10, browser={'browser': 'chrome', 'platform': 'windows', 'mobile': False})
url = 'https://www.brownsfashion.com/api/listing'
r = scraper.get(url, headers=headers)

print(r.text)

如果修正后仍然返回403,按以下方案依次尝试:

2 使用curl_cffi伪装TLS指纹

Cloudflare会校验请求的TLS JA3指纹,常规请求库的指纹特征明显容易被拦截,curl_cffi可以模拟真实浏览器的TLS指纹,绕过指纹校验:

from curl_cffi import requests

headers = {
    'accept': 'application/json',
    'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0.0.0 Safari/537.36',
    'accept-language': 'zh-CN,zh;q=0.9,en;q=0.8',
    'referer': 'https://www.brownsfashion.com/',
}

r = requests.get('https://www.brownsfashion.com/api/listing', headers=headers, impersonate='chrome124')
print(r.text)

3 使用带隐身能力的无头浏览器

如果上述接口请求的方式均无法绕过,直接使用Playwright模拟真实用户访问,会自动处理Cloudflare的JS校验、cookie生成、人机验证逻辑:

from playwright.sync_api import sync_playwright

with sync_playwright() as p:
    # 调试阶段可以将headless改为False,直观看到校验过程
    browser = p.chromium.launch(headless=True)
    context = browser.new_context(user_agent='Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0.0.0 Safari/537.36')
    page = context.new_page()
    page.goto('https://www.brownsfashion.com/')
    # 等待页面安全校验完成
    page.wait_for_load_state('networkidle')
    # 调用目标接口
    api_response = page.request.get('https://www.brownsfashion.com/api/listing', headers={
        'accept': 'application/json'
    })
    print(api_response.text())
    browser.close()

注意:请控制请求频率,避免高频访问被站点封禁IP。

内容的提问来源于stack exchange,提问作者strugglecity

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 19:54:03