mirror of
https://github.com/KingJin-web/zy.git
synced 2025-12-17 15:34:37 +08:00
ksjsb
This commit is contained in:
236
快手极速版200/慢脚双端-Max.py
Normal file
236
快手极速版200/慢脚双端-Max.py
Normal file
@@ -0,0 +1,236 @@
|
||||
#####################################砍手双端-Max################################################
|
||||
|
||||
# 需要安装python依赖:PySocks , pycryptodome, packaging
|
||||
|
||||
# 本脚本为快手普通版和快手极速版合并版,ck填写哪个版本的ck就自动运行指定快手版本,脚本自动检测快手版本类型
|
||||
# 本脚本为快手普通版和快手极速版合并版,ck填写哪个版本的ck就自动运行指定快手版本,脚本自动检测快手版本类型
|
||||
# 本脚本为快手普通版和快手极速版合并版,ck填写哪个版本的ck就自动运行指定快手版本,脚本自动检测快手版本类型
|
||||
|
||||
# 支持系统类型:arm,amd64,不支持windos,支持py版本:3.10,3.11
|
||||
# 支持系统类型:arm,amd64,不支持windos,支持py版本:3.10,3.11
|
||||
# 支持系统类型:arm,amd64,不支持windos,支持py版本:3.10,3.11
|
||||
|
||||
######################################使用教程区#################################################
|
||||
|
||||
# 极速版广告类型:1为饭补, 2为看广告,3为宝箱广告,4为200广
|
||||
# 极速版全局广告类型变量:KS_JSLX,列表模式,写什么就运行指定类型任务,格式:1,2,3,数字之间使用英文逗号隔开,不写则默认运行全部,
|
||||
# 普通版广告类型:1为看广告,2为200广,3为宝箱广告
|
||||
# 极速版全局广告类型变量:KS_PTLX,列表模式,写什么就运行指定类型任务,格式:1,2,3,数字之间使用英文逗号隔开,不写则默认运行全部,
|
||||
# 抓包 ck和salt
|
||||
# 格式1:Cookie#salt(一键抓包参数)
|
||||
# 格式2:Cookie#salt#sock5代理(一键抓包参数#socks代理)
|
||||
# 格式3:备注#Cookie#salt(一键抓包参数)
|
||||
# 格式4:备注#Cookie#salt#sock5代理(一键抓包参数#socks代理)
|
||||
# ck前面添加备注则使用备注,不写默认账号名
|
||||
# 广告类型为列表模式,使用英文逗号隔开,填什么就指定跑什么
|
||||
# socks5存在则使用代理,反之
|
||||
# socks代理选择参数,可填可不填 格式:ip|port|username|password
|
||||
# ck变量:ksmaxck, 填写上面两种格式ck均可,多号新建变量即可
|
||||
# 并发变量:KS_BF, 设置为False为关闭并发,默认开启
|
||||
# 并发模式变量:KS_BFMS, 写1或者2,默认2,某些情况运行脚本后无法手动停止时可切换并发模式尝试解决
|
||||
# 卡密变量:KS_Card 填写购买的卡密即可
|
||||
# 金币自动兑换变量:KS_JBDH 默认关闭,True开启 (仅支持极速版)
|
||||
# 自动提现变量:KS_TX 默认关闭,True开启 (仅支持极速版)
|
||||
# 提现金额变量:KS_TXAmout 默认50,只支持3,10,20,50 类型 (仅支持极速版)
|
||||
# 运行延迟变量:KS_YC 默认30,45,格式为【最低,最高】,不要【】,中间英文逗号隔开
|
||||
# 运行次数变量:KS_YXCS 默认50,每个类型广告运行指定次数后切换下一个广告类型
|
||||
# 金币控制变量:KS_JBMAX 默认500000,金币达到当前数量则结束运行(已修改为当日获得金币,而不是账号金币总余额)
|
||||
# 广告模式变量:KS_ADMS 默认为1(正常广告),设置2为追加(理论默认即可),正常广告只有几条跑完无广告后可修改为2后继续尝试
|
||||
# 自动更换did变量:KS_DID 默认关闭,True开启(外面的养号)
|
||||
# 自动更换did金币数量变量:KS_JBSU 低于多少尝试更换did,默认1000,自动更换开启生效
|
||||
|
||||
###############################################################################################
|
||||
# 注意:上面变量理论默认值即可,自己需要改的设置变量修改即可,不需要改的变量切勿设置变量后值留空,不然会报错
|
||||
# 注意:上面变量理论默认值即可,自己需要改的设置变量修改即可,不需要改的变量切勿设置变量后值留空,不然会报错
|
||||
# 注意:上面变量理论默认值即可,自己需要改的设置变量修改即可,不需要改的变量切勿设置变量后值留空,不然会报错
|
||||
###############################################################################################
|
||||
|
||||
|
||||
|
||||
import os
|
||||
import urllib.request
|
||||
import sys
|
||||
import time
|
||||
import requests
|
||||
import platform
|
||||
from packaging import version
|
||||
|
||||
|
||||
class SystemChecker:
|
||||
@staticmethod
|
||||
def is_arm_architecture():
|
||||
"""检测是否为ARM架构"""
|
||||
machine = platform.machine().lower()
|
||||
arm_patterns = [
|
||||
'arm', 'aarch', 'arm64', 'aarch64',
|
||||
'armv7', 'armv8', 'armhf'
|
||||
]
|
||||
return any(pattern in machine for pattern in arm_patterns)
|
||||
|
||||
@staticmethod
|
||||
def is_amd_architecture():
|
||||
"""检测是否为AMD/x86架构"""
|
||||
machine = platform.machine().lower()
|
||||
amd_patterns = [
|
||||
'x86_64', 'amd64', 'x86', 'i386', 'i686',
|
||||
'amd', 'intel', 'x64'
|
||||
]
|
||||
return any(pattern in machine for pattern in amd_patterns)
|
||||
|
||||
@staticmethod
|
||||
def is_supported_architecture():
|
||||
"""检测是否支持ARM或AMD架构"""
|
||||
return SystemChecker.is_arm_architecture() or SystemChecker.is_amd_architecture()
|
||||
|
||||
@staticmethod
|
||||
def is_linux_supported():
|
||||
"""检测是否为Linux且支持ARM或AMD架构"""
|
||||
return SystemChecker.is_supported_architecture()
|
||||
|
||||
@staticmethod
|
||||
def get_architecture_type():
|
||||
"""获取具体的架构类型"""
|
||||
if SystemChecker.is_arm_architecture():
|
||||
return 'arm'
|
||||
elif SystemChecker.is_amd_architecture():
|
||||
return 'amd'
|
||||
else:
|
||||
return 'unknown'
|
||||
|
||||
@staticmethod
|
||||
def get_detailed_info():
|
||||
return {
|
||||
'os': platform.system(),
|
||||
'architecture': platform.machine(),
|
||||
'arch_type': SystemChecker.get_architecture_type()
|
||||
}
|
||||
|
||||
|
||||
checker = SystemChecker()
|
||||
|
||||
if checker.is_linux_supported():
|
||||
pass
|
||||
else:
|
||||
info = checker.get_detailed_info()
|
||||
print(f'当前系统不支持,当前系统类型: {info["os"]},系统架构: {info["architecture"]}')
|
||||
exit(1)
|
||||
|
||||
def get_architecture():
|
||||
"""获取系统架构"""
|
||||
arch = platform.machine().lower()
|
||||
if 'arm' in arch or 'aarch' in arch:
|
||||
return 'arm'
|
||||
elif 'x86' in arch or 'amd' in arch or 'i386' in arch or 'i686' in arch:
|
||||
return 'amd'
|
||||
else:
|
||||
return arch
|
||||
|
||||
current_arch = get_architecture()
|
||||
|
||||
|
||||
def GET_SO():
|
||||
PythonV = sys.version_info
|
||||
if PythonV.major == 3 and PythonV.minor == 10:
|
||||
PythonV = '10'
|
||||
print('当前Python版本为3.10 开始安装...')
|
||||
elif PythonV.major == 3 and PythonV.minor == 11:
|
||||
PythonV = '11'
|
||||
print('当前Python版本为3.11 开始安装...')
|
||||
else:
|
||||
return False, f'不支持的Python版本:{sys.version}'
|
||||
|
||||
try:
|
||||
mirrors = [
|
||||
f'https://raw.bgithub.xyz/BIGOSTK/pyso/refs/heads/main/ksmax_{current_arch}_{PythonV}.so',
|
||||
f'https://gh-proxy.com/https://raw.githubusercontent.com/BIGOSTK/pyso/main/ksmax_{current_arch}_{PythonV}.so',
|
||||
f'https://raw.githubusercontent.com/BIGOSTK/pyso/main/ksmax_{current_arch}_{PythonV}.so',
|
||||
f'https://raw.bgithub.xyz/BIGOSTK/pyso/main/ksmax_{current_arch}_{PythonV}.so'
|
||||
]
|
||||
|
||||
last_error = None
|
||||
for url in mirrors:
|
||||
try:
|
||||
print(f'尝试从 {url} 下载...')
|
||||
with urllib.request.urlopen(url, timeout=15) as response:
|
||||
if response.status == 200:
|
||||
with open('./ksmax.so', 'wb') as out_file:
|
||||
out_file.write(response.read())
|
||||
print('下载更新成功')
|
||||
return True, None
|
||||
except Exception as e:
|
||||
last_error = e
|
||||
print(f'下载更新失败: {e}')
|
||||
time.sleep(1)
|
||||
|
||||
return False, f'所有镜像尝试失败: {last_error}'
|
||||
|
||||
except Exception as e:
|
||||
return False, e
|
||||
|
||||
def get_version():
|
||||
url = 'https://gh-proxy.com/https://raw.githubusercontent.com/BIGOSTK/pyso/main/ksmax_ver.json'
|
||||
try:
|
||||
r = requests.get(url)
|
||||
r.raise_for_status()
|
||||
remote_version = r.json()['ksmax']['version']
|
||||
return remote_version
|
||||
except Exception as e:
|
||||
return None
|
||||
|
||||
def restart_script():
|
||||
print("检测到更新,正在重启脚本...")
|
||||
python_executable = sys.executable
|
||||
script_path = os.path.abspath(__file__)
|
||||
os.execv(python_executable, [python_executable, script_path])
|
||||
|
||||
def main():
|
||||
need_restart = False
|
||||
|
||||
if not os.path.exists('./ksmax.so'):
|
||||
print("未找到ksmax.so文件,开始下载...")
|
||||
success, error = GET_SO()
|
||||
if not success:
|
||||
print(f'无法获取ksmax.so: {error}')
|
||||
return
|
||||
need_restart = True
|
||||
else:
|
||||
try:
|
||||
import ksmax
|
||||
LocalVersion = ksmax.get_ver()
|
||||
YunVersion = get_version()
|
||||
if YunVersion is not None and version.parse(LocalVersion) != version.parse(YunVersion):
|
||||
print(f"检测到新版本: {YunVersion} (当前: {LocalVersion}),开始更新...")
|
||||
success, error = GET_SO()
|
||||
if success:
|
||||
need_restart = True
|
||||
else:
|
||||
print(f'更新失败: {error}')
|
||||
except ImportError:
|
||||
print("ksmax.so文件损坏或版本不兼容,重新下载...")
|
||||
success, error = GET_SO()
|
||||
if success:
|
||||
need_restart = True
|
||||
else:
|
||||
print(f'重新下载失败: {error}')
|
||||
return
|
||||
|
||||
if need_restart:
|
||||
restart_script()
|
||||
|
||||
try:
|
||||
import ksmax
|
||||
ksmax.main()
|
||||
except ImportError as e:
|
||||
print(f'导入ksmax模块失败: {e}')
|
||||
print("尝试重新下载模块...")
|
||||
success, error = GET_SO()
|
||||
if success:
|
||||
restart_script()
|
||||
else:
|
||||
print(f'重新下载失败: {e}')
|
||||
except Exception as e:
|
||||
print(f'执行ksmax.main()时出错: {e}')
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
main()
|
||||
Reference in New Issue
Block a user