import requests import re import tkinter as tk from io import BytesIO from urllib.request import urlopen import base64 import json class Form1(tk.Tk): def __init__(self): super().__init__() self.title("123Pan下载工具") self.geometry("400x300") self.label1 = tk.Label(self, text="请输入123盘的网址:") self.label1.pack() self.entry = tk.Entry(self, width=50) self.entry.pack() self.button1 = tk.Button(self, text="开始下载", command=self.download) self.button1.pack() self.label2 = tk.Label(self, text="提取下载链接:") self.label2.pack() self.label3 = tk.Label(self, text="") self.label3.pack() self.textbox = tk.Text(self, height=5, width=50) self.textbox.pack() self.button2 = tk.Button(self, text="清除输入", command=self.clear_input) self.button2.pack() def download(self): url = self.entry.get() share_id, share_Code = self.extract_id_and_code(url) if share_id: self.get_info(share_id, share_Code) else: tk.messagebox.showerror("错误", "没有找到123盘的网址!") def extract_id_and_code(self, url): share_id = re.search(r"(?<=/s/)[^./]+", url) share_Code = re.search(r"提取码:(\w+)", url) if share_id: share_id = share_id.group(0) if share_Code: share_Code = share_Code.group(1) if share_Code == "": self.label3.config(text="") else: self.label3.config(text="提取码:" + share_Code) return share_id, share_Code return None, None def get_info(self, share_id, share_Code): headers = { "User-Agent": "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/109.0.0.0 Safari/537.36 Edg/109.0.1518.100" } request_url = f"https://www.123pan.com/b/api/share/get?limit=100&next=1&orderBy=share_id&orderDirection=desc&shareKey={share_id}&SharePwd={share_Code}&ParentFileId=0&Page=1" response = requests.get(request_url, headers=headers) if response.status_code == 200: response_text = response.text self.parse_get_info(response_text, share_id) else: tk.messagebox.showerror("错误", "获取用户信息失败") def parse_get_info(self, response_text, share_id): data = json.loads(response_text) code = data["code"] if code == 0: info_list = data["data"]["InfoList"] if info_list: info = info_list[0] if info["Type"] == 0: file_id = info["FileId"] size = info["Size"] s3_key_flag = info["S3KeyFlag"] etag = info["Etag"] self.combined_data(share_id, file_id, size, s3_key_flag, etag) else: self.textbox.delete(1.0, tk.END) self.textbox.insert(tk.END, "错误:软件目前不支持文件夹解析。") else: message = data["message"] tk.messagebox.showerror("错误", f"错误代码 {code}//{message}") def combined_data(self, share_id, file_id, size, s3_key_flag, etag): headers = { "User-Agent": "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/109.0.0.0 Safari/537.36 Edg/109.0.1518.100", "Content-Type": "application/json;charset=UTF-8" } url = "https://www.123pan.com/b/api/share/download/info" data = { "ShareKey": share_id, "FileID": file_id, "S3keyFlag": s3_key_flag, "Size": size, "Etag": etag } response = requests.post(url, headers=headers, json=data) if response.status_code == 200: response_text = response.text self.parse_download_url(response_text) else: tk.messagebox.showerror("错误", "获取下载链接失败") def parse_download_url(self, response_text): data = json.loads(response_text) code = data["code"] if code == 0: download_url = data["data"]["DownloadURL"] decoded_url = self.extract_download_url(download_url) self.get_xz_url(decoded_url) else: message = data["message"] tk.messagebox.showerror("错误", f"错误代码 {code}//{message}") def extract_download_url(self, url): params_match = re.search(r"params=([^&]+)", url) if params_match: params_value = params_match.group(1) decoded_bytes = base64.b64decode(params_value) decoded_string = decoded_bytes.decode("utf-8") if "auto_redirect" not in decoded_string: if "?" in decoded_string: decoded_string += "&auto_redirect=0" else: decoded_string += "?auto_redirect=0" return decoded_string else: tk.messagebox.showerror("错误", "提取DownloadURL失败") def get_xz_url(self, request_url): headers = { "User-Agent": "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/109.0.0.0 Safari/537.36 Edg/109.0.1518.100" } response = requests.get(request_url, headers=headers) if response.status_code == 200: response_text = response.text self.parse_xz_url(response_text) else: tk.messagebox.showerror("错误", "获取直链失败") def parse_xz_url(self, response_text): data = json.loads(response_text) code = data["code"] if code == 0: redirect_url = data["data"]["redirect_url"] self.textbox.delete(1.0, tk.END) self.textbox.insert(tk.END, redirect_url) else: message = data["message"] tk.messagebox.showerror("错误", f"错误代码 {code}//{message}") def clear_input(self): self.entry.delete(0, tk.END) self.textbox.delete(1.0, tk.END) if __name__ == "__main__": form = Form1() form.mainloop()
python教程
123网盘解析下载python脚本
- Python脚本
- 网盘解析
- 123网盘
-
监测腾讯云轻量服务器流量超标关机python脚本
脚本介绍一款监测腾讯云轻量应用服务器流量包使用情况,并根据配置进行警告和关机的Python脚本。GitHub:https://github.com/XiaoXinYo/Tencent_Cloud_LightHouse_Server_Guardian脚本功能仅用于轻量级服务器1.自动检测流量包剩余,可设置使用比2.自动关...
-
Python无需认证QQ扫码登录脚本
无需认证QQ扫码登录脚本python脚本,盗用JD的QQ登录,也可以改成其他网址。无需自己注册腾讯开发者,无需自己有一套网址去申请应用Get_QQ返回QQ号,也可以获取到QQ头像、好友等其他信息,请勿用于非法行为import requestsimport timefrom PIL import Imagedef...
-
最新python织梦dedecms远程执行脚本
织梦CMS是使用最多的CMS之 一,但是漏洞也非常多。分享一款python写的织梦远程文件包含漏洞。修复此漏洞方法,请见文章底部。织梦CMS漏洞代码#! /usr/bin/env python#coding=utf-8#Joseph(小续)import requestsimport sysimport redef main():try:url="...
-
123网盘在线解析下载网站源码
源码简介123网盘在线解析下载网站源码,单文件PHP源码,只需在相关网站上找到资源链接,然后粘贴到123网盘解析PHP版本源码中进行解析,即可在网页上直接解析出下载链接。...
-
百度网盘直连解析+aria2不限速下载方法
本文分享的是利用第三方百度网盘直连解析工具+aria2软件来达到百度网盘不限速下载的方法,大家看操作。1、下载aria2,这里推荐这个版本:https://dl.motrix.app/release/Motrix-Setup-1.6.11.exe,然后安装。2、打开这个网站:https://baidu.kinh.cc/,分享链接...
-
158网盘直连解析代码
API代码<?php/*** @package 158Pan* @author Andy* @version 1.2.0* @link https://lsland.cn*/// 指定允许其他域名访问 header('Access-Control-Allow-Origin:*');header('content-type:application/json;charset:utf-8');functi...
-
123网盘解析下载python脚本
import requestsimport reimport tkinter as tkfrom io import BytesIOfrom urllib.request import urlopenimport base64import jsonclass Form1(tk.Tk): def __init__(self): super().__init__() self.title("123Pan下载工具") ...
-
123网盘在线解析下载网站源码
源码简介123网盘在线解析下载网站源码,单文件PHP源码,只需在相关网站上找到资源链接,然后粘贴到123网盘解析PHP版本源码中进行解析,即可在网页上直接解析出下载链接。...
-
123网盘直连解析下载php源码
一段123网盘直连解析下载源码,css样式都有,界面也很不错,复制到PHP环境即可运行。<!DOCTYPE html><html><head> <title>123解析</title> <style> body { font-family: "Helvetica Neue", Arial, sans-serif; backgr...
-
Python获取彩云天气实时天气API源码
import requests # 用户输入的秘钥和经纬度(以逗号分隔)api_key = "" # 这里输入用户自己的秘钥location = "...
-
基于Django的RustDesk Api&Web Server源码分享
项目介绍一个 python 实现的 Rustdesk API 接口,支持 WebUI 管理。基于Django的RustDes...
-
批量修改照片文件大小Python脚本
一段批量修改照片文件大小Python脚本,输入和输出图片文件夹,图片你的最大和最小标准,批量调整照片文件大小。# ...
-
文本段落自动分隔格式化Python脚本
我们在做网站时,需要处理大量的文本内容,要求文本段落内容按我们的格式分隔排版,手动一个个的修改就非常浪费时...
-
利用ffmpeg提取视频第一帧保存成图片
做影视采集站的找不到影视封面可以试试这个方法,利用ffmpeg提取视频第一帧保存成图片,这样就省去了找封面图的...