Create app.py
Browse files
app.py
ADDED
|
@@ -0,0 +1,120 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
from flask import Flask, request, jsonify
|
| 2 |
+
import os
|
| 3 |
+
import requests
|
| 4 |
+
|
| 5 |
+
app = Flask(__name__)
|
| 6 |
+
|
| 7 |
+
# 定义全局字符串变量
|
| 8 |
+
str_values = ''
|
| 9 |
+
str_uvalues = ''
|
| 10 |
+
# 从环境变量中获取密码
|
| 11 |
+
password = os.environ.get('PASSWORD', '123456')
|
| 12 |
+
|
| 13 |
+
# 定义一个函数,接受 Cookie-Values 和要保留的键的列表作为参数
|
| 14 |
+
def filter_cookie_values(cookie_values, keep_keys):
|
| 15 |
+
new_cookie_values = ""
|
| 16 |
+
pairs = [pair.strip() for pair in cookie_values.split(';')]
|
| 17 |
+
for pair in pairs:
|
| 18 |
+
if '=' in pair:
|
| 19 |
+
key, value = pair.split('=', 1)
|
| 20 |
+
key = key.strip()
|
| 21 |
+
value = value.strip()
|
| 22 |
+
if key in keep_keys:
|
| 23 |
+
new_cookie_values += f'{key}={value}; '
|
| 24 |
+
new_cookie_values = new_cookie_values[:-2]
|
| 25 |
+
return new_cookie_values
|
| 26 |
+
|
| 27 |
+
@app.route('/SET', methods=['POST'])
|
| 28 |
+
def set_value():
|
| 29 |
+
method = request.method
|
| 30 |
+
pwd = request.args.get('pwd')
|
| 31 |
+
if not pwd or pwd!= password:
|
| 32 |
+
return 'Invalid password', 401
|
| 33 |
+
keep_keys = ["_U",
|
| 34 |
+
"MUID",
|
| 35 |
+
'KievRPSSecAuth',
|
| 36 |
+
'cct',
|
| 37 |
+
'buid',
|
| 38 |
+
'ak_bmsc',
|
| 39 |
+
'bm_sv',
|
| 40 |
+
'cl_dtrs',
|
| 41 |
+
'_RwBf',
|
| 42 |
+
'SRCHHPGUSR',
|
| 43 |
+
'WLS']
|
| 44 |
+
keep_keys_u = ["_U",
|
| 45 |
+
"WLS"]
|
| 46 |
+
cookie_values = request.headers.get('Cookie-Values')
|
| 47 |
+
set_value = filter_cookie_values(cookie_values, keep_keys)
|
| 48 |
+
get_u_value = filter_cookie_values(cookie_values, keep_keys_u)
|
| 49 |
+
if set_value:
|
| 50 |
+
str_values = set_value
|
| 51 |
+
if get_u_value and get_u_value not in str_uvalues:
|
| 52 |
+
str_uvalues += ';' + get_u_value
|
| 53 |
+
return 'Set value successfully'
|
| 54 |
+
else:
|
| 55 |
+
return 'No Cookie-Values in header', 400
|
| 56 |
+
|
| 57 |
+
@app.route('/GET', methods=['GET'])
|
| 58 |
+
def get_value():
|
| 59 |
+
method = request.method
|
| 60 |
+
pwd = request.args.get('pwd')
|
| 61 |
+
if not pwd or pwd!= password:
|
| 62 |
+
return 'Invalid password', 401
|
| 63 |
+
result = {'result': {'cookies': str_values}}
|
| 64 |
+
return jsonify(result)
|
| 65 |
+
|
| 66 |
+
@app.route('/CLS', methods=['GET', 'POST'])
|
| 67 |
+
def clear_value():
|
| 68 |
+
method = request.method
|
| 69 |
+
pwd = request.args.get('pwd')
|
| 70 |
+
if not pwd or pwd!= password:
|
| 71 |
+
return 'Invalid password', 401
|
| 72 |
+
replaced_str = str_uvalues.replace(';', '<br>')
|
| 73 |
+
str_values = ''
|
| 74 |
+
str_uvalues = ''
|
| 75 |
+
return 'Clear value successfully' + '\n' + replaced_str
|
| 76 |
+
|
| 77 |
+
@app.route('/HisU', methods=['GET', 'POST'])
|
| 78 |
+
def history_u():
|
| 79 |
+
method = request.method
|
| 80 |
+
pwd = request.args.get('pwd')
|
| 81 |
+
if not pwd or pwd!= password:
|
| 82 |
+
return 'Invalid password', 401
|
| 83 |
+
replaced_str = str_uvalues.replace(';', '<br>')
|
| 84 |
+
return 'Ukey History:' + '\n' + replaced_str
|
| 85 |
+
|
| 86 |
+
@app.route('/', methods=['GET', 'POST'])
|
| 87 |
+
def root():
|
| 88 |
+
return 'Please visit /SET /GET or /CLS with?pwd=xxxxxx'
|
| 89 |
+
|
| 90 |
+
@app.route('/q', methods=['GET'])
|
| 91 |
+
def q_route():
|
| 92 |
+
url = request.args.get('url')
|
| 93 |
+
if not url:
|
| 94 |
+
return jsonify({'error': 'URL is required'}), 400
|
| 95 |
+
keep_keys = ["_U",
|
| 96 |
+
"MUID",
|
| 97 |
+
'KievRPSSecAuth',
|
| 98 |
+
'cct',
|
| 99 |
+
'buid',
|
| 100 |
+
'ak_bmsc',
|
| 101 |
+
'bm_sv',
|
| 102 |
+
'_RwBf',
|
| 103 |
+
'SRCHHPGUSR',
|
| 104 |
+
'WLS']
|
| 105 |
+
response = requests.get(url, headers={
|
| 106 |
+
'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 Edg/120.0.0.0',
|
| 107 |
+
'Accept-Language': 'zh-CN,zh;q=0.9'
|
| 108 |
+
})
|
| 109 |
+
set_cookie_array = response.headers.get('set-cookie', [])
|
| 110 |
+
if set_cookie_array:
|
| 111 |
+
cookies = [cookie.split(';')[0] for cookie in set_cookie_array]
|
| 112 |
+
cookies_str = '; '.join(cookies)
|
| 113 |
+
else:
|
| 114 |
+
cookies_str = ''
|
| 115 |
+
set_value = filter_cookie_values(cookies_str, keep_keys)
|
| 116 |
+
result = {'result': {'cookies': set_value}}
|
| 117 |
+
return jsonify(result)
|
| 118 |
+
|
| 119 |
+
if __name__ == '__main__':
|
| 120 |
+
app.run(port=7860)
|