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汉字笔顺图及书写gif动画生成代码
基于Github的makemeahanzi项目开发,项目地址:https://www.skishore.me/makemeahanzi/笔顺图及书写动画实现里...
-
Python获取彩云天气实时天气API源码
import requests # 用户输入的秘钥和经纬度(以逗号分隔)api_key = "" # 这里输入用户自己的秘钥location = "...
-
基于Django的RustDesk Api&Web Server源码分享
项目介绍一个 python 实现的 Rustdesk API 接口,支持 WebUI 管理。基于Django的RustDes...
-
批量修改照片文件大小Python脚本
一段批量修改照片文件大小Python脚本,输入和输出图片文件夹,图片你的最大和最小标准,批量调整照片文件大小。# ...
-
文本段落自动分隔格式化Python脚本
我们在做网站时,需要处理大量的文本内容,要求文本段落内容按我们的格式分隔排版,手动一个个的修改就非常浪费时...

