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

复现Veikkaus网站EventStream(SSE)请求无返回,求问题排查

问题:Veikkaus网站SSE请求无法获取数据的排查

我在Veikkaus网站的页面上发现它通过EventStream(Server Side Events,SSE)从服务器获取数据。尝试将该网络请求复制为CURL导入Postman后,EventStream没有任何返回;随后用Python代码调试,结果还是一样。请问我哪里操作有误?

用户提供的调试代码:

import requests
from sseclient import SSEClient

# URL of the SSE endpoint
sse_url = "https://api-fip.sbtech.com/veikkaus/sportsdata/v2/stream/events?query=%24filter%3Did%20eq%20%2729185250%27&locale=fi&initialData=true&includeMarkets=all&jwt=eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE2OTE1MjQ1NjEsImlzcyI6IlZlaWtrYXVzIiwiU2l0ZUlkIjozNTksIklzQW5vbnltb3VzIjp0cnVlLCJTZXNzaW9uSWQiOiI5MTNkZjc2My02ODdmLTQzOWUtYmZhYy01YjVkODg3NjM4NWQiLCJuYmYiOjE2OTE1MTczNjEsImlhdCI6MTY5MTUxNzM2MX0.aARFZpjCI-4PAX9UHVE6P5fb_g2eRn8N3DAcX7xIS_DYDSU4yCk3eWYHuDsPd3dCTTskTsYg39_bw0VOOqNj-vln8EWYsCVDe5nH0aqudWSm-ly9YZ6ecA9Bb014OJbS4oBl1l11DTyoEVXdpK6wZLwikcdCyQyqPZGO0qz4RhQbG91KnGSzv64BbEcyWop6f0-DE6rjPthwhi2w0OXaYSIhFLL83STLP_EHmd6VadXLCk5fvBWcRDeApy-gIkLzlD8XwFcMXQj02YL2jV1DNe2_VUz7Qzb4mJjpoy3iuZGjGQbHKhQzTOrjr8MmJAKY_2_GXt8AEY-MSf3kU7VozA"

headers = {
  'authority': 'api-fip.sbtech.com',
  'accept': 'text/event-stream',
  'accept-language': 'en-GB,en-US;q=0.9,en;q=0.8',
  'cache-control': 'no-cache',
  'origin': 'https://www.veikkaus.fi',
  'referer': 'https://www.veikkaus.fi/',
  'sec-ch-ua': '"Not/A)Brand";v="99", "Google Chrome";v="115", "Chromium";v="115"',
  'sec-ch-ua-mobile': '?0',
  'sec-ch-ua-platform': '"macOS"',
  'sec-fetch-dest': 'empty',
  'sec-fetch-mode': 'cors',
  'sec-fetch-site': 'cross-site',
  'user-agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/115.0.0.0 Safari/537.36',
  'Cookie': 'lb_sess=c76e48e72ae4aee2c9c3031bc3f7ede4'
}

# Make a GET request to establish the SSE connection
response = requests.get(sse_url, headers=headers, stream=True)

print(response.status_code)

if response.status_code == 200:
    # Create an SSE client
    sse_client = SSEClient(response.content)

    # Iterate through SSE events
    for event in sse_client:
        print("Received update:", event.data)
else:
    print("Failed to establish SSE connection.")

核心问题及修复方案

  • JWT令牌过期:URL中的jwt参数具有时效性,从令牌的exp字段可看出已过期,必须从当前浏览器的真实请求中复制最新的JWT值。
  • SSEClient初始化错误:代码中用response.content初始化客户端,这会把响应内容全部加载到内存,破坏流式传输特性。应改为直接传入response对象:
    sse_client = SSEClient(response)
    
  • 请求头转义错误:sec-ch-ua等字段中的"是HTML转义的双引号,需替换为实际双引号,否则服务器无法正确解析。比如将"Not/A)Brand";v="99"改为"Not/A)Brand";v="99"。
  • Cookie失效:lb_sess是负载均衡会话标识,一段时间后会失效,同样需要从浏览器当前请求中复制最新值。

修复后的示例代码

import requests
from sseclient import SSEClient

# 注意:替换成从浏览器获取的最新JWT和Cookie值
sse_url = "https://api-fip.sbtech.com/veikkaus/sportsdata/v2/stream/events?query=%24filter%3Did%20eq%20%2729185250%27&locale=fi&initialData=true&includeMarkets=all&jwt=你的最新JWT令牌"

headers = {
    'authority': 'api-fip.sbtech.com',
    'accept': 'text/event-stream',
    'accept-language': 'en-GB,en-US;q=0.9,en;q=0.8',
    'cache-control': 'no-cache',
    'origin': 'https://www.veikkaus.fi',
    'referer': 'https://www.veikkaus.fi/',
    'sec-ch-ua': '"Not/A)Brand";v="99", "Google Chrome";v="115", "Chromium";v="115"',
    'sec-ch-ua-mobile': '?0',
    'sec-ch-ua-platform': '"macOS"',
    'sec-fetch-dest': 'empty',
    'sec-fetch-mode': 'cors',
    'sec-fetch-site': 'cross-site',
    'user-agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/115.0.0.0 Safari/537.36',
    'Cookie': 'lb_sess=你的最新Cookie值'
}

response = requests.get(sse_url, headers=headers, stream=True)

print(response.status_code)

if response.status_code == 200:
    # 修复:直接传入response对象
    sse_client = SSEClient(response)
    for event in sse_client:
        if event.data:
            print("Received update:", event.data)
else:
    print(f"Failed to establish SSE connection. Status code: {response.status_code}")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 18:35:14