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

如何使用Python无需Session下载Instagram Reels、图片、头像及动态?

无需Session ID下载Instagram内容的可行方案

核心思路:利用公开API与无授权访问端点

Instagram的公开账号内容(非私密)可通过未授权的API端点或页面源码解析获取下载链接,不需要Cookie Session ID。以下分类型给出具体实现方案:

1. 头像(DP)下载

头像获取是最直接的,可通过固定格式的API端点获取高清链接:

  • 若已知用户ID:请求 https://i.instagram.com/api/v1/users/{user_id}/info/,解析返回JSON中的 hd_profile_pic_url_info.url 字段
  • 若仅知用户名:先请求 https://www.instagram.com/{username}/?__a=1 获取用户ID,再用上述端点拿高清头像

示例Python代码:

import requests
import json

def get_hd_profile_pic(username):
    headers = {
        "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36"
    }
    # 第一步:获取用户ID
    user_info_url = f"https://www.instagram.com/{username}/?__a=1"
    resp = requests.get(user_info_url, headers=headers)
    if resp.status_code != 200:
        return None
    user_data = json.loads(resp.text)
    user_id = user_data['graphql']['user']['id']
    # 第二步:获取高清头像链接
    dp_api_url = f"https://i.instagram.com/api/v1/users/{user_id}/info/"
    dp_resp = requests.get(dp_api_url, headers=headers)
    dp_data = json.loads(dp_resp.text)
    return dp_data['user']['hd_profile_pic_url_info']['url']

2. 公开Reels下载

Reels的公开内容可通过两种方式获取下载链接:

  • 页面源码解析:访问Reels网页版URL(https://www.instagram.com/reel/{reel_id}/),在源码中搜索 "video_url" 字段提取链接
  • 未授权API调用:请求 https://i.instagram.com/api/v1/media/{reel_id}/info/,根据media_type字段判断类型:
    • 视频Reel:取 video_versions[0].url
    • 图片Reel:取 image_versions2.candidates[0].url

示例代码片段:

def get_reel_download_link(reel_id):
    headers = {
        "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36",
        "Accept-Language": "en-US,en;q=0.9"
    }
    api_url = f"https://i.instagram.com/api/v1/media/{reel_id}/info/"
    resp = requests.get(api_url, headers=headers)
    if resp.status_code != 200:
        return None
    media_data = json.loads(resp.text)
    if media_data['media_type'] == 2:
        return media_data['video_versions'][0]['url']
    else:
        return media_data['image_versions2']['candidates'][0]['url']

3. 公开动态(Stories)下载

Stories的未授权访问需要先获取用户的Story列表:

  • 请求 https://i.instagram.com/api/v1/feed/user/{user_id}/story/,需携带User-Agent和固定的X-IG-App-ID(可使用936619743392459)
  • 解析返回JSON中的items数组,每个Story项根据media_type提取对应链接:
    • 视频Story:video_versions[0].url
    • 图片Story:image_versions2.candidates[0].url

示例代码片段:

def get_story_download_links(user_id):
    headers = {
        "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36",
        "X-IG-App-ID": "936619743392459"
    }
    story_api_url = f"https://i.instagram.com/api/v1/feed/user/{user_id}/story/"
    resp = requests.get(story_api_url, headers=headers)
    if resp.status_code != 200:
        return []
    story_data = json.loads(resp.text)
    download_links = []
    for item in story_data.get('items', []):
        if item['media_type'] == 2:
            download_links.append(item['video_versions'][0]['url'])
        else:
            download_links.append(item['image_versions2']['candidates'][0]['url'])
    return download_links

4. 公开帖子图片/视频下载

普通公开帖子的下载逻辑和Reels一致,使用https://i.instagram.com/api/v1/media/{post_id}/info/端点,根据media_type提取对应链接即可。

关键注意事项

  • User-Agent模拟:必须设置真实的浏览器User-Agent,否则会被Instagram返回403错误
  • API稳定性:Instagram的未授权API端点可能随时变更,需定期测试调整
  • 账号权限限制:所有无需Session ID的方法仅适用于公开账号,私密账号内容必须登录后才能访问
  • 速率控制:避免高频请求,否则会触发IP封禁

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 02:50:21