You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

130 lines
4.5 KiB

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

import requests
import uuid
import base64
import os
# 创建 Session 对象
session = requests.Session()
# 1. 登录
def login():
login_url = 'https://ww1.colorlightcloud.com/wp-login.php'
log = 'Ylt5786'
pwd = 'DJCtjy064'
login_data = {'log': log, 'pwd': pwd, 'lwa': '1', 'login-with-ajax': 'login'}
print("正在登录...")
login_response = session.post(login_url, data=login_data)
if login_response.json().get('result') == True:
print("登录成功Cookie 已保存")
else:
print("登录失败")
exit()
# 2. 创建上传任务
def create_upload_task():
upload_url = 'https://ww1.colorlightcloud.com/wp-content/uploads/Tus'
filename = r'D:\1.mp4'
filetype = 'video/mp4' # 根据实际文件类型设置
# 获取文件大小
file_size = os.path.getsize(filename)
# 对文件名和文件类型进行 Base64 编码
filename_base64 = base64.b64encode(filename.encode()).decode()
filetype_base64 = base64.b64encode(filetype.encode()).decode()
# 动态生成 X-Request-ID
x_request_id = str(uuid.uuid4())
# 构造请求头
headers = {
'Accept': '*/*',
'Accept-Encoding': 'gzip, deflate, br, zstd',
'Accept-Language': 'zh-CN,zh;q=0.9',
'Connection': 'keep-alive',
'Content-Length': '0',
'Host': 'ww1.colorlightcloud.com',
'Origin': 'https://ww1.colorlightcloud.com',
'Referer': 'https://ww1.colorlightcloud.com/media',
'Sec-Fetch-Dest': 'empty',
'Sec-Fetch-Mode': 'cors',
'Sec-Fetch-Site': 'same-origin',
'Tus-Resumable': '1.0.0',
'Upload-Length': str(file_size), # 动态设置文件大小
'Upload-Metadata': f'filename {filename_base64},filetype {filetype_base64}',
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/133.0.0.0 Safari/537.36',
'X-Request-ID': x_request_id,
'ngsw-bypass': 'true',
'sec-ch-ua': '"Not(A:Brand";v="99", "Google Chrome";v="133", "Chromium";v="133"',
'sec-ch-ua-mobile': '?0',
'sec-ch-ua-platform': '"Windows"',
}
print("正在创建上传任务...")
response = session.post(upload_url, headers=headers)
if response.status_code == 201: # 201 Created 表示任务创建成功
print("上传任务创建成功")
# 返回上传路径
return response.headers.get('Location')
else:
print("上传任务创建失败,状态码:", response.status_code)
print("响应内容:", response.text)
exit()
# 3. 上传文件
def upload_file(upload_path):
filename = r'D:\KeCheng\课程\【进阶篇】\【完成】生成6K高清小姐姐照片\imgs\1_512×768.png'
# 读取文件内容
print("正在读取文件...")
with open(filename, 'rb') as file:
file_data = file.read()
# 动态生成 X-Request-ID
x_request_id = str(uuid.uuid4())
# 构造请求头
headers = {
'Accept': '*/*',
'Accept-Encoding': 'gzip, deflate, br, zstd',
'Accept-Language': 'zh-CN,zh;q=0.9',
'Connection': 'keep-alive',
'Content-Length': str(len(file_data)), # 动态设置文件大小
'Content-Type': 'application/offset+octet-stream',
'Host': 'ww1.colorlightcloud.com',
'Origin': 'https://ww1.colorlightcloud.com',
'Referer': 'https://ww1.colorlightcloud.com/media',
'Sec-Fetch-Dest': 'empty',
'Sec-Fetch-Mode': 'cors',
'Sec-Fetch-Site': 'same-origin',
'Tus-Resumable': '1.0.0',
'Upload-Offset': '0',
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/133.0.0.0 Safari/537.36',
'X-Request-ID': x_request_id,
'ngsw-bypass': 'true',
'sec-ch-ua': '"Not(A:Brand";v="99", "Google Chrome";v="133", "Chromium";v="133"',
'sec-ch-ua-mobile': '?0',
'sec-ch-ua-platform': '"Windows"',
}
print("正在上传文件...")
upload_response = session.patch(upload_path, headers=headers, data=file_data)
print("上传响应状态码:", upload_response.status_code)
print("上传响应内容:", upload_response.text)
# 主流程
if __name__ == '__main__':
# 1. 登录
login()
# 2. 创建上传任务
upload_path = create_upload_task()
print("上传路径:", upload_path)
# 3. 上传文件
upload_file('https://ww1.colorlightcloud.com' + upload_path)