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

爬取忽略自定义请求头网站:crimegrade.org Cookie报错解决

问题原因

你遇到的Please enable cookies提示不是站点本身的常规cookie校验,是站点前置的Cloudflare(CDN/反爬服务)拦截返回的内容。你代码里硬编码的_ga、_gid是谷歌统计的用户标识cookie,完全不是Cloudflare校验需要的核心凭证;同时裸requests.get不会自动维护跨请求的cookie,也无法执行Cloudflare挑战要求的JS逻辑,自然拿不到合法的校验cookie,被判定为异常爬虫请求。

可行解决方案
  • 优先使用requests.Session()会话对象自动维护cookie链路:不要手动写死固定cookie值,先访问站点根域名拿到Cloudflare自动下发的合法cookie,再发起目标页请求,参考实现如下:
import requests

test_url = 'https://crimegrade.org/safest-places-in-60629/'
# 初始化会话,自动存储、携带全流程产生的cookie
session = requests.Session()
# 配置基础请求头,移除硬编码的无效cookie字段
session.headers.update({
    'accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9',
    'accept-encoding': 'gzip, deflate, br',
    'accept-language': 'en-US,en;q=0.9',
    'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/102.0.5005.63 Safari/537.36'
})
# 先访问站点首页,触发Cloudflare校验,自动留存合法cookie
session.get('https://crimegrade.org/', timeout=15)
# 携带合法cookie请求目标页面
resp = session.get(test_url, timeout=15)
print(resp.status_code, resp.text)
  • 如果上述方案仍被拦截,说明站点开启了Cloudflare的JS挑战等级:裸requests不具备JS执行能力,无法计算出挑战要求的动态cookie值,需要替换为支持自动执行JS、绕过Cloudflare校验的请求工具,模拟真实浏览器的JS运行环境完成挑战后再抓取内容。
  • 调整请求头配置逻辑:不要一次性堆砌所有你从浏览器里复制的请求头,比如sec-fetch-*、referer、cache-control这类字段如果和请求链路不匹配,反而会被判定为爬虫特征,首次请求只保留最基础的accept、accept-language、user-agent即可,等拿到合法cookie后再按需补充头信息。

注意:不要复用过期或者从其他环境复制的固定cookie值,Cloudflare的校验cookie和请求IP、客户端指纹强绑定,跨环境复制的cookie100%无法通过校验。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.03 05:31:36