266 lines
17 KiB
Python
266 lines
17 KiB
Python
import re
|
||
import requests
|
||
from sqlalchemy import create_engine, text as sql_text
|
||
import portalocker
|
||
from loguru import logger
|
||
|
||
try:
|
||
engine = create_engine("mysql+mysqlconnector://ky_tools:HJQY35seXen8patn@1panel.stupidpz.com:3306/ky_tools")
|
||
connection = engine.connect()
|
||
logger.debug('链接成功')
|
||
except:
|
||
logger.debug('连接失败!')
|
||
|
||
ky_base64 = 'data:image/png;base64,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'
|
||
|
||
|
||
def read_file(filename):
|
||
try:
|
||
with open(filename, 'r') as file:
|
||
return file.read()
|
||
except IOError as e:
|
||
logger.debug(f"Error reading file {filename}: {e}")
|
||
raise
|
||
|
||
|
||
def write_file(filename, content):
|
||
try:
|
||
with open(filename, 'w') as file:
|
||
portalocker.lock(file, portalocker.LOCK_EX) # 获取独占锁
|
||
file.write(content)
|
||
portalocker.unlock(file) # 释放锁
|
||
except IOError as e:
|
||
logger.debug(f"Error writing to file {filename}: {e}")
|
||
raise
|
||
|
||
|
||
def get_url_mapping(urls_with_context, template_type):
|
||
categories = {"WEB": [], "H5": [], "全站": [], "体育": [], "棋牌": [], "电子": [], "web": [], "h5": [],
|
||
"全站APP": [], "体育APP": []}
|
||
# 遍历URLs及其前文本的元组列表进行分类
|
||
for context, url in urls_with_context:
|
||
key = context.strip().replace(" ", "")
|
||
if key in categories:
|
||
categories[key].append(url)
|
||
|
||
# 构建映射字典,直接返回结果
|
||
if template_type == 'hth':
|
||
url_mapping = {
|
||
"hthApp": categories.get("全站", [""])[0] if categories.get("全站", [""]) else
|
||
categories.get("全站APP", [""])[0],
|
||
"hthtyApp": categories.get("体育", [""])[0] if categories.get("体育", [""]) else
|
||
categories.get("体育APP", [""])[0],
|
||
"hthWeb": categories.get("WEB", [""])[0] if categories.get("WEB", [""]) else categories.get("web", [""])[
|
||
0],
|
||
"hthH5": categories.get("H5", [""])[0] if categories.get("H5", [""]) else categories.get("h5", [""])[0]
|
||
}
|
||
elif template_type == 'ky': # ky模板
|
||
url_mapping = {
|
||
"kyWeb": categories.get("WEB", [""])[0],
|
||
"kyFljWeb": categories.get("WEB", ["", ""])[1],
|
||
"kyH5": categories.get("H5", [""])[0],
|
||
"kyFljH5": categories.get("H5", ["", ""])[1],
|
||
"kyApp": categories.get("全站", [""])[0],
|
||
"kyTyApp": categories.get("体育", [""])[0],
|
||
}
|
||
elif template_type == 'jy': # jy模板
|
||
url_mapping = {
|
||
"jyWeb": categories.get("WEB", [""])[0],
|
||
"jyH5": categories.get("H5", [""])[0],
|
||
"jyApp": categories.get("全站", [""])[0],
|
||
"jyQp": categories.get("棋牌", [""])[0],
|
||
"jyDz": categories.get("电子", [""])[0],
|
||
"jyFljPc": categories.get("WEB", ["", ""])[1],
|
||
"jyFljH5": categories.get("H5", ["", ""])[1]
|
||
}
|
||
elif template_type == 'aty': # aty模板
|
||
url_mapping = {
|
||
"atyApp": categories.get("全站", [""])[0] if categories.get("全站", [""]) else
|
||
categories.get("全站APP", [""])[0],
|
||
"atytyApp": categories.get("体育", [""])[0] if categories.get("体育", [""]) else
|
||
categories.get("体育APP", [""])[0],
|
||
"atyWeb": categories.get("WEB", [""])[0] if categories.get("WEB", [""]) else categories.get("web", [""])[
|
||
0],
|
||
"atyH5": categories.get("H5", [""])[0] if categories.get("H5", [""]) else categories.get("h5", [""])[0]
|
||
}
|
||
else:
|
||
logger.debug('未知模板')
|
||
return
|
||
|
||
return url_mapping
|
||
|
||
|
||
def extract_urls(text):
|
||
pattern = r'(?:\n|^)\s*([^\n]*?)\s*(https?://[^\s]+)'
|
||
url_list = re.findall(pattern, text)
|
||
url_type, is_agent = get_url_type(text, url_list)
|
||
|
||
if url_type != 'unknown':
|
||
update_agent_url(url_list, url_type)
|
||
|
||
return [(context.strip(), url) for context, url in url_list], url_type, is_agent
|
||
|
||
|
||
def get_url_type(text, url_list):
|
||
keywords = {
|
||
'ky': '开云',
|
||
'hth': '华体会',
|
||
'jy': '九游',
|
||
'aty': '爱体育'
|
||
}
|
||
|
||
for url_type, keyword in keywords.items():
|
||
if keyword in text:
|
||
return url_type, False
|
||
|
||
return check_urls(url_list)
|
||
|
||
|
||
def check_urls(url_list):
|
||
headers = {
|
||
'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36'
|
||
}
|
||
|
||
for context, url in url_list:
|
||
try:
|
||
response = requests.get(url, headers=headers)
|
||
if response.status_code == 200:
|
||
content = response.text
|
||
if '开云' in content or ky_base64 in content:
|
||
return 'ky', '马甲包' in content
|
||
elif '华体会' in content:
|
||
return 'hth', '马甲包' in content
|
||
elif '九游' in content:
|
||
return 'jy', '马甲包' in content
|
||
elif '爱体育' in content:
|
||
return 'aty', '马甲包' in content
|
||
except requests.RequestException:
|
||
logger.debug(f"URL '{url}' 不可用,跳过。")
|
||
|
||
return 'unknown', False
|
||
|
||
|
||
def update_agent_url(url_list, url_type):
|
||
for context, url in url_list:
|
||
if "代理web" in context.replace(" ", "").lower():
|
||
try:
|
||
with engine.connect() as connection:
|
||
update_stmt = sql_text("UPDATE ky_tools.ky_account SET url = :url WHERE type = :url_type")
|
||
connection.execute(update_stmt, {"url": url, "url_type": url_type})
|
||
connection.commit()
|
||
logger.debug(f"{url_type}后台链接更新成功")
|
||
except Exception as e:
|
||
logger.debug(f"执行SQL语句出错: {e}")
|
||
break
|
||
|
||
|
||
def update_js_content(url_mapping, url_type):
|
||
js_file = 'static/link.js'
|
||
|
||
# 读取现有的 link.js 文件内容
|
||
try:
|
||
existing_content = read_file(js_file)
|
||
except FileNotFoundError:
|
||
# 如果文件不存在,则创建一个新的 JavaScript 文件
|
||
existing_content = """
|
||
const codes = {
|
||
'hth': '3016341',
|
||
'ky': '97238304',
|
||
'jy': '90413847',
|
||
'aty': '123456'
|
||
};
|
||
|
||
const links = {
|
||
'hth': {
|
||
'hthWeb': 'https://www.3wmnr0.vip:8005/register?i_code='+codes['hth'],
|
||
'hthH5': 'https://www.95b8ns.vip:8002/entry/register?i_code='+codes['hth'],
|
||
'hthApp': 'https://www.jv4n7s1.com:8000/?i_code='+codes['hth'],
|
||
'hthtyApp': 'https://www.cmqd0v.vip:9515/?i_code='+codes['hth'],
|
||
},
|
||
'ky': {
|
||
'kyWeb': 'https://www.2ezmig.com:9501/register?i_code='+codes['ky'],
|
||
'kyH5': 'https://www.u3hnhg.com:9970/entry/register?i_code='+codes['ky'],
|
||
'kyApp': 'https://www.1wpeq.vip:8663/?i_code='+codes['ky'],
|
||
'kyTyApp': 'https://www.3djjf.vip:9512/?i_code='+codes['ky'],
|
||
'kyFljWeb': 'https://www.qpiao.vip:9006/register?i_code='+codes['ky'],
|
||
'kyFljH5': 'https://www.7ig4jf.com:8443/entry/register?i_code='+codes['ky'],
|
||
|
||
},
|
||
'jy': {
|
||
'jyWeb': 'https://www.1wv3jq.com:9008/register/?i_code='+codes['jy'],
|
||
'jyH5': 'https://www.1j5voy.vip:9113/entry/register?i_code='+codes['jy'],
|
||
'jyApp': 'https://www.shbb1.vip:9511/?i_code='+codes['jy'],
|
||
'jyQp': 'https://www.3a10en.vip:9077/?i_code='+codes['jy'],
|
||
'jyDz': 'https://www.3z9tsr.vip:9964/?i_code='+codes['jy'],
|
||
'jyFljPc': 'https://www.az8z32.vip:8002/register/?i_code='+codes['jy'],
|
||
'jyFljH5': 'https://www.c053i2.vip:6004/entry/register?i_code='+codes['jy'],
|
||
},
|
||
'aty': {
|
||
'atyWeb': 'https://www.3wmnr0.vip:8005/register?i_code='+codes['aty'],
|
||
'atyH5': 'https://www.95b8ns.vip:8002/entry/register?i_code='+codes['aty'],
|
||
'atyApp': 'https://www.jv4n7s1.com:8000/?i_code='+codes['aty'],
|
||
'atytyApp': 'https://www.cmqd0v.vip:9515/?i_code='+codes['aty'],
|
||
},
|
||
};
|
||
function visit(platform, key) {
|
||
window.open(links[platform][key]);
|
||
}
|
||
|
||
"""
|
||
|
||
# 使用正则表达式匹配和替换链接的域名部分
|
||
for key, value in url_mapping.items():
|
||
logger.debug(f"key: {key}, value: {value}")
|
||
pattern = re.compile(r"'{}':?\s*'(https?://[^/]+)(/[^']*)'".format(key))
|
||
existing_content = pattern.sub(lambda match: "'{0}': '{1}{2}'".format(key, value, match.group(2)),
|
||
existing_content)
|
||
|
||
# 将更新后的内容写回到 combined.js 文件中
|
||
write_file(js_file, existing_content)
|
||
|
||
|
||
def change_url(text):
|
||
try:
|
||
urls_with_context, url_type, is_agent = extract_urls(text)
|
||
if url_type == 'unknown':
|
||
return False, 'unknown.js'
|
||
if not is_agent:
|
||
url_mapping = get_url_mapping(urls_with_context, url_type)
|
||
update_js_content(url_mapping, url_type)
|
||
return True, url_type
|
||
return True, '代理更新'
|
||
except Exception as e:
|
||
logger.debug(f"An error occurred: {e}")
|
||
return False, 'unknown.js'
|
||
|
||
|
||
# 主程序入口
|
||
if __name__ == '__main__':
|
||
try:
|
||
text = '''
|
||
九游娱乐
|
||
SEO 专用域名
|
||
|
||
WEB https://www.1zsaxz.com:9514
|
||
H5 https://www.1l3dee.vip:9192 【新】
|
||
全站 https://www.sjieu.vip:9013
|
||
棋牌 https://www.2w33ay.vip:8001
|
||
电子 https://www.3ku3z2.vip:9443
|
||
|
||
九游娱乐【SEO防拦截域名】
|
||
WEB https://www.as421r.vip:9520
|
||
H5 https://www.c0azge.vip:7988 【新】
|
||
'''
|
||
|
||
res = requests.post("http://127.0.0.1:8000/changeurl", json={'text': text})
|
||
if res.status_code == 200:
|
||
if res.json()['res']:
|
||
msg = f'{res.json()["msg"]}修改成功'
|
||
else:
|
||
msg = f'{res.json()["msg"]}修改失败'
|
||
else:
|
||
msg = '请求发生错误,请检查服务是否正常'
|
||
logger.debug(msg)
|
||
except Exception as e:
|
||
logger.debug(f"An error occurred in the main program: {e}")
|