能否通过Cloudflare GraphQL Analytic API获取指定URL访问量
解答
完全可以通过Cloudflare GraphQL Analytics API获取指定URL的访问量,你已经接入Cloudflare的前提下不需要额外新增统计链路,直接调用接口就能拉取对应历史数据。
具体实现说明
- 核心使用
httpRequestsAdaptiveGroups数据集查询即可,该数据集原生支持clientRequestHTTPHost(域名)、clientRequestHTTPPath(请求路径)维度过滤,可以精准匹配你要统计的目标URL。 - 注意统计口径和前端埋点类工具(比如GA)的差异:
- 默认统计范围是Cloudflare边缘节点收到的所有到达你站点的请求,包含爬虫、扫描器产生的请求,如果需要统计普通用户访问量,可以增加
botManagement.score过滤条件,一般将得分阈值设为30以上即可筛掉绝大多数恶意bot流量。 - 默认不会包含被Cloudflare WAF、DDoS防护直接在边缘拦截的请求,如果需要统计全量请求(含拦截量),可以删除对应响应状态码的过滤规则。
- 默认统计范围是Cloudflare边缘节点收到的所有到达你站点的请求,包含爬虫、扫描器产生的请求,如果需要统计普通用户访问量,可以增加
- 可直接参考的基础查询模板:
query FetchSpecifiedUrlStats( $zoneId: String! $startTime: String! $endTime: String! $targetUrlPath: String! ) { viewer { zones(filter: {zoneTag: $zoneId}) { httpRequestsAdaptiveGroups( limit: 10000 filter: { datetime_gt: $startTime datetime_lt: $endTime clientRequestHTTPPath: $targetUrlPath # 可选:过滤WAF拦截请求,不需要可删除 edgeResponseStatus_ne: 403 } ) { sum { visits # 会话维度的访问量,和常规PV统计口径更接近 requests # 总请求数 } dimensions { # 按小时聚合数据,可根据需要调整为datetimeFiveMinutes/datetimeDay等粒度 datetimeHour } } } } }
- 额外注意:不同Cloudflare套餐对应的数据留存时长不同,免费版可查询最近30天的数据,Pro版支持查询最近1年的数据,企业版留存周期更长,拉取数据时不要超出你账号对应的可查时间范围。
内容的提问来源于stack exchange,提问作者Thiti-Dev
相关产品推荐
相关产品推荐

