如何获取GoFundMe捐赠列表及实时捐赠通知?
问题:如何实现GoFundMe实时捐赠推送?
我需要获取GoFundMe筹款活动的捐赠列表,原本以为可通过API实现,但GoFundMe并无公开API,于是尝试网页爬虫。爬虫成功获取了筹款总额及目标金额,但抓取页面底部的捐赠列表、评论区域,或活动附带的/donations页面时,部分元素返回为空。例如爬取/donations页面时,<div id="portal">元素仅返回空标签,而Chrome检查面板中该元素包含大量嵌套内容。我的爬虫代码如下:
headers = {'Accept-Language': 'en-UK,en;q=0.5'} page = get(URL + "/donations", headers=headers) soup = bs(page.content, "html.parser") results = soup.find(id="__next") results = results.find("div", class_="page-modal-layout_pageModalLayout__O_yxc") results = soup.find(id="portal")
我最初猜测数据存储在受认证保护的外部数据库中,但发现一款名为“GoFundMe Alerts by LX”的直播覆盖工具可接收实时捐赠通知,并能获取如{donation_id: 1102799627, amount: 5, is_offline: false, is_anonymous: true, ...}的捐赠数据结构,这说明存在可利用的接口,但我未能找到更多线索。现咨询:如何实现GoFundMe实时捐赠的推送?是否具备可行性?
可行性与实现思路
1. 静态爬虫失效的原因
GoFundMe的捐赠列表属于客户端渲染内容,你用requests获取的只是页面初始HTML骨架,实际捐赠数据是页面加载完成后通过AJAX请求动态拉取的,所以BeautifulSoup解析不到#portal内的实际内容。
2. 定位未公开的内部API
既然第三方工具能获取数据,说明存在未公开的内部接口,可通过以下方式查找:
- 打开Chrome开发者工具(F12),切换到Network标签,访问目标活动的
/donations页面,过滤XHR/Fetch请求,重点关注含donation、transaction关键词的请求,这类接口通常返回JSON格式的捐赠数据,包含你需要的donation_id、amount等字段。 - 复制接口请求头(比如
Authorization、X-CSRF-Token)到爬虫代码中,这些头信息是接口访问的必要凭证,通常从页面初始HTML或Cookie中提取。
3. 实时推送的两种实现方式
方式一:API轮询
- 定时(比如每10秒)调用找到的捐赠数据API,对比最新返回结果与本地存储的历史数据,发现新增捐赠时触发推送(比如发送HTTP请求到你的通知服务、推送至聊天工具)。
- 优势:实现简单,无需处理复杂连接逻辑;劣势:存在延迟,频繁请求可能触发反爬机制。
方式二:WebSocket监听
- 很多实时通知依赖WebSocket,在Network面板的WS标签下查找GoFundMe的实时连接,观察其订阅消息和推送的捐赠数据格式。
- 模拟该WebSocket连接,订阅目标活动的捐赠事件,一旦有新捐赠即可实时接收推送。
- 优势:真正实时,延迟极低;劣势:需要处理握手、心跳、重连逻辑,接口可能随时变更。
4. 注意事项
- GoFundMe内部API无公开文档,接口路径、参数或认证方式可能随时修改,实现需定期维护。
- 控制请求频率,避免触发IP封禁或反爬措施。
- 确保使用行为符合GoFundMe服务条款,避免违规用途。
内容的提问来源于stack exchange,提问作者Lordimass
相关产品推荐
相关产品推荐

