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

Python爬虫遇403禁止错误:自动获取合法HTTP头部Cookie方案咨询

解决Dexscreener爬取时Cloudflare Cookie自动获取问题

以下是几种自动绕过__cf_bm Cookie限制的可行方案:

方案1:利用requests模拟初始请求流程(轻量爬取适用)

__cf_bm是Cloudflare Bot Management生成的临时会话Cookie,可通过模拟浏览器初始请求自动获取:

  • 先发送不带Cookie的请求,触发Cloudflare的Cookie生成逻辑
  • 借助requests会话自动保存响应返回的Cookie
  • 后续请求复用该会话即可维持有效状态

修改后的代码示例:

import requests

url = "https://dexscreener.com"
headers = {
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:109.0) Gecko/20100101 Firefox/115.0"
}

session = requests.Session()
session.headers.update(headers)

# 首次请求触发Cookie生成,会话自动保存Set-Cookie
session.get(url)

# 复用会话发起有效请求
response = session.get(url)
print(response.status_code)
print(response.text[:500])

注意:该方法依赖Cloudflare的基础验证逻辑,若后续触发验证码则失效。

方案2:使用undetected-chromedriver(稳定适配大规模爬取)

若Cloudflare检测到requests的请求特征并触发验证码,可通过undetected-chromedriver模拟真实浏览器行为,自动处理验证和Cookie更新:

  1. 安装依赖:
pip install undetected-chromedriver
  1. 代码示例:
import undetected_chromedriver as uc
import time

# 初始化浏览器,自动绕过Cloudflare验证
driver = uc.Chrome()
driver.get("https://dexscreener.com")

# 等待页面加载完成
time.sleep(3)

# 获取页面内容
page_source = driver.page_source
print(page_source[:500])

# 提取Cookie供requests复用(可选)
cookies = {cookie['name']: cookie['value'] for cookie in driver.get_cookies()}
print(cookies.get('__cf_bm'))

driver.quit()

该方法完全模拟真实用户操作,Cloudflare难以检测,Cookie会随会话自动更新,无需手动维护。

通用注意事项

  • 设置合理请求间隔,避免短时间内高频请求触发频率限制
  • 保持User-Agent与真实浏览器一致,避免使用特殊标识
  • 大规模爬取时建议搭配代理IP分散请求来源

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 04:25:04