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

使用Python Requests请求Blob URL报错及获取有效URL的问题

Blob URL请求报错原因与解决方法

一、为什么会出现InvalidSchema错误?

  • blob:https://xxx这种格式的URL是浏览器内部生成的伪协议地址,并非标准的HTTP/HTTPS网络协议。Requests库仅支持HTTP、HTTPS这类可直接与服务器通信的协议,无法识别blob:协议,因此会抛出No connection adapters were found的错误。
  • 你在浏览器网络控制台看到的Blob URL请求,本质是浏览器读取本地内存中已加载的Blob数据,并没有真正向服务器发起新请求,所以用Requests直接调用这个URL完全无效。

二、如何用Python Requests获取正确的图形数据?

核心思路是找到浏览器生成Blob数据前,向服务器请求原始图形的真实接口,而不是去请求Blob URL:

  1. 定位真实接口
    • 打开浏览器开发者工具的「网络」面板,清空现有请求记录,然后点击下载图形的按钮。
    • 忽略Blob URL的请求,重点找在它之前触发的、返回图形原始数据的请求(通常是GET/POST请求,响应类型可能是image/png、application/octet-stream等)。这个请求的URL就是你需要的真实接口地址。
  2. 模拟真实请求
    • 复制该真实请求的请求头、参数(如果有),用Requests构造相同的请求。注意保持会话一致性,比如先访问页面获取必要的Cookie:
      import requests
      
      # 初始化会话,保持Cookie一致
      s = requests.Session()
      # 先访问目标页面,获取会话所需的Cookie
      s.get('https://192.168.56.108/your-target-page', verify=False)
      
      # 替换为你找到的真实图形接口URL
      real_graphic_url = 'https://192.168.56.108/api/real-graphic-endpoint'
      headers = {
          'Origin': 'https://192.168.56.108',
          'Referer': 'https://192.168.56.108/your-target-page',
          'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/105.0.0.0 Safari/537.36 Edg/105.0.1343.27'
      }
      
      # 发起请求并保存图形
      response = s.get(real_graphic_url, headers=headers, stream=True, verify=False)
      with open('downloaded-graphic.png', 'wb') as f:
          for chunk in response.iter_content(chunk_size=1024):
              f.write(chunk)
      
  3. 关键注意点
    • 确保请求头中的Referer、Origin与浏览器请求一致,避免被服务器的反爬机制拦截。
    • 如果接口需要特定的请求参数(如查询参数、表单数据),要完整复制到Requests请求中。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 16:21:01