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

5 months ago
import requests
import uuid
import base64
5 months ago
import os
5 months ago
# 创建 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'
5 months ago
filename = r'D:\1.mp4'
filetype = 'video/mp4' # 根据实际文件类型设置
# 获取文件大小
file_size = os.path.getsize(filename)
5 months ago
# 对文件名和文件类型进行 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',
5 months ago
'Upload-Length': str(file_size), # 动态设置文件大小
5 months ago
'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()
5 months ago
print("上传路径:", upload_path)
5 months ago
# 3. 上传文件
5 months ago
upload_file('https://ww1.colorlightcloud.com' + upload_path)