吾爱破解 - LCG - LSG |安卓破解|病毒分析|www.52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 701|回复: 4
收起左侧

[学习记录] 对Solar图床的代码复刻

[复制链接]
鸠山一茶 发表于 2023-8-12 17:49
前些日子在逛论坛发现有大佬对picshak图床做了可视化软件可供上传,链接如下
https://www.52pojie.cn/thread-1812672-1-1.html
然后本人对这个很感兴趣,于是写了代码进行复刻这个项目
温馨提示:本文需要一定的Python基础进行开发,不是成品文件,如果是小白,请访问上面的链接直接下载大佬的成品软件
由于我比较擅长于Python,因此这个代码也是使用Python写的,也顺便对代码进行讲解,
[Python] 纯文本查看 复制代码
import json
import requests
import os
from mimetypes import guess_type

def upload_file(file_to_upload, headers, cookies):
    url = "https://picshack.net/upload"
    response = requests.post(url, headers=headers, files=[file_to_upload], cookies=cookies)
    return response

print("1: (默认选项)")
print("2: 一次性账号")
config_choice = input("请选择上传配置: ")

if config_choice == '1':
    config_file_name = 'config_20_1.json'
elif config_choice == '2':
    config_file_name = 'config_1.json'
elif config_choice == '':
    config_file_name = 'config_20_1.json'
else:
    print("无效的选择。请重新运行程序并输入有效的选择。")
    exit()

with open(config_file_name, 'r') as config_file:
    config = json.load(config_file)
    headers = config['headers']
    cookies = config['cookies']
    max_files_per_batch = config.get('max_files_per_batch', 20)

folder_path = input("请输入文件夹路径: ")
file_paths = [os.path.join(folder_path, file_name) for file_name in os.listdir(folder_path) if
              file_name.endswith(('.jpg', '.png', '.gif'))]

all_responses = []

for i in range(0, len(file_paths), max_files_per_batch):
    for path in file_paths[i:i + max_files_per_batch]:
        mime_type, _ = guess_type(path)
        if mime_type in ('image/jpeg', 'image/png', 'image/gif'):
            with open(path, 'rb') as file:
                file_tuple = ('uploads', (os.path.basename(path), file.read(), mime_type))
                response = upload_file(file_tuple, headers, cookies)
                if response.status_code == 200:
                    try:
                        response_data = json.loads(response.text)
                        if response_data['type'] == 'success':
                            file_name_without_extension, file_extension = os.path.splitext(os.path.basename(path))
                            file_data = {
                                "file_name": file_name_without_extension,
                                "file_extension": file_extension.lstrip('.'),
                                "ID": response_data['data']['id']
                            }
                            all_responses.append(file_data)
                    except Exception as e:
                        print(f"解析文件响应时出错 {path}: {e}")

folder_name = os.path.basename(os.path.normpath(folder_path))
output_file_path = f'{folder_name}_response_data.json'

with open(output_file_path, 'w', encoding='utf-8') as output_file:
    json.dump(all_responses, output_file, indent=4, ensure_ascii=False)

上面链接提到的大佬的原理是对于图床进行抓包,然后上传,
我的代码能做到的是用户通过配置文件登录自己的账号,然后进行自动化上传并且写入到JSON文件当中进行后续开发,
然后我们来看一下效果
[Asm] 纯文本查看 复制代码
    {
        "file_name": "",
        "file_extension": "",
        "ID": ""
    },

上传成功以后就会写入到JSON文件当中成为这种格式,然后就可以自由编辑成其他任何想要的格式了
想要进行配置我们可以看到配置文件这里
下面是第一种
[Asm] 纯文本查看 复制代码
{
  "headers": {
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36",
    "accept": "application/json",
    "accept-encoding": "gzip, deflate, br",
    "accept-language": "zh-CN,zh;q=0.9,en;q=0.8",
    "cache-control": "no-cache",
    "origin": "https://picshack.net",
    "referer": "https://picshack.net/",
    "x-csrf-token": "",
    "x-requested-with": "XMLHttpRequest"
  },
  "cookies": {
    "_ga": "1",
    "": "",
    "XSRF-TOKEN": "",
    "_session": ""
  }
}

这个是需要登录以后获取cookie然后填入的版本
然后下面是不登录获取cookie的版本
[Asm] 纯文本查看 复制代码
{
  "headers": {
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36",
    "accept": "application/json",
    "accept-encoding": "gzip, deflate, br",
    "accept-language": "zh-CN,zh;q=0.9,en;q=0.8",
    "cache-control": "no-cache",
    "origin": "https://picshack.net",
    "referer": "https://picshack.net/",
    "x-csrf-token": "",
    "x-requested-with": ""
  },
  "cookies": {
    "_ga": "",
    "PPA_CI": "",
    "XSRF-TOKEN": "",
    "_session": "",
    "_ga_X1XJ6XC1S8": ""
  }
}

大家可以自行登录网站获取cookie以后填入,图床网址如下
https://picshack.net/

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

asd124689 发表于 2023-8-13 06:45
这个容量有没有限制
 楼主| 鸠山一茶 发表于 2023-8-13 09:53
asd124689 发表于 2023-8-13 06:45
这个容量有没有限制

没限制,但是对图片大小有限制,最大只能上传100MB的图片
QIUJIAN 发表于 2023-9-11 09:42
 楼主| 鸠山一茶 发表于 2023-9-30 16:45
QIUJIAN 发表于 2023-9-11 09:42
这个图片链接是永久有效的吗?

目前看来应该是可以稳定运行的,我也没有用很久
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则 警告:本版块禁止回复与主题无关非技术内容,违者重罚!

快速回复 收藏帖子 返回列表 搜索

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

GMT+8, 2024-5-23 16:30

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

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