吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 4635|回复: 56
收起左侧

[Python 原创] 刚写的Instagram视频下载器

  [复制链接]
dabiaoge144 发表于 2024-12-24 00:30
原理:通过网上某个Instagram下载网站接口  实现模拟python下载
功能:有pyqt6实现的界面,输入 url地址 一键批量下载
1.提取接口环节
地址:aHR0cHM6Ly9pZ2xvZy53emp1bi5jb20vemgtY24=
F12 抓包分析
image.png

提取的视频地址在这 ,发现有个token值是密文,找来找去发现就在这个接口响应里面
image.png
然后通过python切割提取一下就行
接口很容易就解决了,也不需要逆向分析
然后很简单吧,就设计一个pyqt界面
博主也是第一天接触pyqt6 ,AI 帮写的,代码分享仅供学习
#! /usr/bin/env python
# -*- coding: utf-8 -*-
# @Time    : 2024/12/24 0:08
# @AuThor  : 理想爱爬虫
# @file    : demo4.py
import sys
import threading
import requests
import json
from PyQt6.QtWidgets import QApplication, QWidget, QVBoxLayout, QPushButton, QTextEdit, QLabel
from PyQt6.QtCore import Qt, pyqtSignal, QObject

# 下载视频的函数
def download_video(insurl, save_path, callback):
    try:
        headers = {
####################
        }

        url = ##自己去接口拿###
        data = {"url": insurl}
        response = requests.post(url, headers=headers, data=data)

        if response.status_code != 200:
            callback(f"请求失败,状态码:{response.status_code},URL:{insurl}")
            return False

        data = response.json()
        token1 = data['data']['progressive'][0]['video']['videourl'].split('=')[1].split('&')[0]

        headers2 = {
######################
        }

        url2 =########自己去接口拿######
        params = {"token": token1}
        response = requests.get(url2, headers=headers2, params=params)

        if response.status_code == 206:
            with open(save_path, 'wb') as file:
                for chunk in response.iter_content(chunk_size=1024):
                    if chunk:
                        file.write(chunk)
            callback(f"部分视频文件已下载并保存为 '{save_path}'")
            return True
        elif response.status_code == 200:
            with open(save_path, 'wb') as file:
                for chunk in response.iter_content(chunk_size=1024):
                    if chunk:
                        file.write(chunk)
            callback(f"视频文件已下载并保存为 '{save_path}'")
            return True
        else:
            callback(f"请求失败,状态码:{response.status_code},URL:{insurl}")
            return False
    except Exception as e:
        callback(f"下载视频时发生错误: {e}")
        return False

# 多线程下载
def download_thread(insurl, save_path, callback):
    threading.Thread(target=download_video, args=(insurl, save_path, callback)).start()

# UI 界面类
class VideoDownloaderUI(QWidget):
    def __init__(self):
        super().__init__()

        self.setWindowTitle("Instagram 视频下载器")
        self.setGeometry(100, 100, 500, 300)

        # 布局
        layout = QVBoxLayout()

        self.url_input = QTextEdit(self)
        self.url_input.setPlaceholderText("输入多个 Instagram 视频 URL,一行一个")
        layout.addWidget(self.url_input)

        self.download_button = QPushButton("开始下载", self)
        self.download_button.clicked.connect(self.start_download)
        layout.addWidget(self.download_button)

        self.status_label = QLabel("状态: 等待下载", self)
        layout.addWidget(self.status_label)

        self.setLayout(layout)

    # 处理下载状态信息
    def update_status(self, status_message):
        self.status_label.setText(f"状态: {status_message}")

    def start_download(self):
        urls = self.url_input.toPlainText().splitlines()
        if not urls:
            self.update_status("状态: 请先输入 URL")
            return

        # 显示状态
        self.update_status("状态: 下载中...")

        # 多线程下载
        for i, url in enumerate(urls):
            save_path = f"D:/spider/Instagram下载/downloads/video_{i+1}.mp4"
            download_thread(url, save_path, self.update_status)

# 启动 PyQt6 应用程序
if __name__ == "__main__":
    app = QApplication(sys.argv)
    window = VideoDownloaderUI()
    window.show()
    sys.exit(app.exec())

免费评分

参与人数 3吾爱币 +3 热心值 +2 收起 理由
melooon + 1 + 1 热心回复!
hiliwenbin + 1 + 1 用心讨论,共获提升!
shengruqing + 1 我很赞同!

查看全部评分

本帖被以下淘专辑推荐:

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

三滑稽甲苯 发表于 2024-12-24 13:39
本帖最后由 三滑稽甲苯 于 2024-12-24 13:43 编辑

https://cobalt.tools/ 一站式下载视频
Screenshot_2024-12-24-13-42-11-729_com.microsoft.emmx.canary.png

免费评分

参与人数 3吾爱币 +2 热心值 +3 收起 理由
我老公不在家 + 1 + 1 谢谢@Thanks!
slb116763814 + 1 我觉得这个不错。
CuresW + 1 + 1 谢谢@Thanks!

查看全部评分

zswnic 发表于 2024-12-24 07:02
 楼主| dabiaoge144 发表于 2024-12-24 13:13
三滑稽甲苯 发表于 2024-12-26 14:36
wooailein 发表于 2024-12-26 14:31
是的,有方法不,就是获取真实的链接,而不是他随机生成的跳转链接

可以试试看我做的脚本 https://greasyfork.org/scripts/492480
WRJ19710416 发表于 2024-12-24 08:06
进来看看,感觉楼主高手啊
yxf515321 发表于 2024-12-24 08:10
应该是需要先能进去,才能下载吧
e007a 发表于 2024-12-24 08:38
了解一下,谢谢!
guqiaozhao 发表于 2024-12-24 08:40
能下载哪些网页的视频?
zhangkaipan 发表于 2024-12-24 08:41
不错 支持下 谢谢楼主分享
jy0012 发表于 2024-12-24 08:44
这个可以有  楼主威武
zlzx01 发表于 2024-12-24 08:47
前提是得有个帐号
DuShiHuaHeShang 发表于 2024-12-24 08:56
油管的能下吗?
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - 52pojie.cn ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2026-5-10 11:13

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表