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

求用Python下载Snapchat中24小时有效Snap的方法

Python实现Snapchat个人Snap(24小时消失内容)的下载方法

我一直在寻找用Python下载Snapchat中点击用户头像后出现、24小时后消失的Snap的方法,目前仅实现了下载Story的功能,代码如下:

import requests
import re
import shutil

def download_file(download_url):
   
    with requests.get(download_url, stream=True) as r:
        with open(fr'video.png', 'wb') as f:
            shutil.copyfileobj(r.raw, f)

url = 'https://story.snapchat.com/p/4cf3899b-690c-4872-a8a0-1c2f91db6563/2619293115389952'

headers = {
    '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',
    'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/107.0.0.0 Safari/537.36',
}
response = requests.get(url, headers=headers)
download_url = re.search(
    r'"snapUrls":{"mediaUrl":"([^"]+)', response.text).group(1)

download_file(download_url)

解决方案

这类个人Snap属于用户私密内容,无法通过公开链接直接获取,必须验证身份后通过Snapchat内部API访问,以下是具体实现步骤:

  1. 模拟登录获取会话凭证
    Snapchat登录包含验证码、双因素认证等校验,建议用selenium模拟浏览器登录,获取有效会话的cookies和授权token,避免手动处理复杂验证流程。

  2. 调用API获取Snap列表
    通过抓包工具(如Charles)获取用户Snap的API端点(通常格式类似https://story.snapchat.com/api/v2/feed/{user_id}),请求需携带登录后获取的Authorization token。

  3. 解析媒体URL并下载
    从API返回的JSON数据中提取每个Snap的mediaUrl,处理URL转义后,通过会话请求下载媒体内容。

示例代码:

import requests
import shutil
from selenium import webdriver
import time

# 1. 用Selenium模拟登录获取会话
driver = webdriver.Chrome()
driver.get('https://accounts.snapchat.com/accounts/login')

# 手动完成登录(或自动填充账号密码,处理验证码)
input("登录完成后按回车继续...")

# 提取会话cookies和token
session = requests.Session()
for cookie in driver.get_cookies():
    session.cookies.set(cookie['name'], cookie['value'])

# 从页面本地存储中提取授权token(需根据实际页面结构调整)
token = driver.execute_script("return window.localStorage.getItem('auth_token');")
driver.quit()

# 2. 获取目标用户的Snap列表
user_id = "目标用户ID"  # 通过搜索API或用户主页获取
headers = {
    'Authorization': f'Bearer {token}',
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/107.0.0.0 Safari/537.36'
}

response = session.get(f'https://story.snapchat.com/api/v2/feed/{user_id}', headers=headers)
snap_data = response.json()

# 3. 下载每个Snap
for snap in snap_data.get('snaps', []):
    media_url = snap.get('mediaUrl')
    if not media_url:
        continue
    
    # 处理URL转义字符
    media_url = media_url.replace('\\/', '/')
    # 生成文件名
    file_ext = media_url.split('.')[-1].split('?')[0]
    file_name = f"snap_{snap['id']}.{file_ext}"
    
    # 下载文件
    with session.get(media_url, stream=True) as r:
        r.raise_for_status()
        with open(file_name, 'wb') as f:
            shutil.copyfileobj(r.raw, f)
    print(f"已下载: {file_name}")

注意事项

  • Snapchat内部API未公开,端点和参数可能随时变化,需定期抓包更新
  • 频繁请求API可能触发账号封禁,建议控制请求频率
  • 操作需严格遵守Snapchat服务条款,仅下载自己有权限访问的内容

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 01:15:32