raw action
This commit is contained in:
parent
ff38ec04e9
commit
afb7179d05
|
@ -0,0 +1,6 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<project version="4">
|
||||||
|
<component name="Encoding">
|
||||||
|
<file url="file://$PROJECT_DIR$/ttt/20887418068269380156_20241208.csv/20887418068269380156_20241208_账务明细.csv" charset="UTF-16" />
|
||||||
|
</component>
|
||||||
|
</project>
|
|
@ -1,4 +1,4 @@
|
||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<project version="4">
|
<project version="4">
|
||||||
<component name="ProjectRootManager" version="2" project-jdk-name="Python 3.8 (script_tools)" project-jdk-type="Python SDK" />
|
<component name="ProjectRootManager" version="2" project-jdk-name="Python 3.9" project-jdk-type="Python SDK" />
|
||||||
</project>
|
</project>
|
|
@ -1,8 +1,10 @@
|
||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<module type="PYTHON_MODULE" version="4">
|
<module type="PYTHON_MODULE" version="4">
|
||||||
<component name="NewModuleRootManager">
|
<component name="NewModuleRootManager">
|
||||||
<content url="file://$MODULE_DIR$" />
|
<content url="file://$MODULE_DIR$">
|
||||||
<orderEntry type="jdk" jdkName="Python 3.8 (script_tools)" jdkType="Python SDK" />
|
<excludeFolder url="file://$MODULE_DIR$/venv" />
|
||||||
|
</content>
|
||||||
|
<orderEntry type="jdk" jdkName="Python 3.9" jdkType="Python SDK" />
|
||||||
<orderEntry type="sourceFolder" forTests="false" />
|
<orderEntry type="sourceFolder" forTests="false" />
|
||||||
</component>
|
</component>
|
||||||
</module>
|
</module>
|
|
@ -1,11 +0,0 @@
|
||||||
from kafka import KafkaProducer
|
|
||||||
import json
|
|
||||||
|
|
||||||
producer = KafkaProducer(bootstrap_servers=['120.27.147.4:9092'],
|
|
||||||
value_serializer=lambda m: json.dumps(m).encode('ascii'))
|
|
||||||
|
|
||||||
print(producer.config)
|
|
||||||
|
|
||||||
message = {"name": "John", "age": 30}
|
|
||||||
producer.send('test-topic', message)
|
|
||||||
producer.flush() # 确保所有消息都已发送
|
|
|
@ -0,0 +1,112 @@
|
||||||
|
import json
|
||||||
|
from lib.util import *
|
||||||
|
import redis
|
||||||
|
from lib.odps import *
|
||||||
|
import time
|
||||||
|
from lib.log import *
|
||||||
|
|
||||||
|
service_name = "raw_action"
|
||||||
|
log_dir = '.'
|
||||||
|
logger = Logger(service_name, log_dir=log_dir, print_terminal=True)
|
||||||
|
|
||||||
|
|
||||||
|
class S:
|
||||||
|
def __init__(self):
|
||||||
|
self.odps_db = get_odps_db()
|
||||||
|
self.redis_cli = redis.Redis(
|
||||||
|
host="172.31.37.66",
|
||||||
|
port=6379,
|
||||||
|
password="redis_HtfNQJ",
|
||||||
|
)
|
||||||
|
self.bulk = list()
|
||||||
|
self.ut = int(time.time())
|
||||||
|
|
||||||
|
def __del__(self):
|
||||||
|
self.redis_cli.close()
|
||||||
|
|
||||||
|
def flush(self):
|
||||||
|
if len(self.bulk) <= 0:
|
||||||
|
return
|
||||||
|
|
||||||
|
tomorrow_zero_time = get_today_zero_time() + 86400
|
||||||
|
inserts = list()
|
||||||
|
ym = ""
|
||||||
|
day = ""
|
||||||
|
while len(self.bulk) > 0:
|
||||||
|
action = self.bulk.pop()
|
||||||
|
ct = safe_get_int(action, "t")
|
||||||
|
if ct >= tomorrow_zero_time:
|
||||||
|
continue
|
||||||
|
dt = datetime.datetime.fromtimestamp(ct)
|
||||||
|
|
||||||
|
new_ym = "%d%02d" % (dt.year, dt.month)
|
||||||
|
new_day = "%02d" % dt.day
|
||||||
|
if ym == "" and day == "":
|
||||||
|
ym = new_ym
|
||||||
|
day = new_day
|
||||||
|
if new_ym != ym or new_day != day:
|
||||||
|
break
|
||||||
|
|
||||||
|
data = [
|
||||||
|
str(ct),
|
||||||
|
safe_get_str(action, "app"),
|
||||||
|
str(safe_get_int(action, "mid")),
|
||||||
|
safe_get_str(action, "oid"),
|
||||||
|
safe_get_str(action, "type"),
|
||||||
|
safe_get_str(action, "stype"),
|
||||||
|
safe_get_str(action, "from"),
|
||||||
|
safe_get_str(action, "ip"),
|
||||||
|
safe_get_str(action, "opt"),
|
||||||
|
]
|
||||||
|
inserts.append(data)
|
||||||
|
partition = "ym=%s,day=%s" % (ym, day)
|
||||||
|
self.odps_db.write_table(
|
||||||
|
"actionlog", inserts,
|
||||||
|
partition=partition,
|
||||||
|
create_partition=True
|
||||||
|
)
|
||||||
|
self.ut = int(time.time())
|
||||||
|
logger.Info("insert: {}, left: {}".format(len(inserts), len(self.bulk)))
|
||||||
|
|
||||||
|
def loop(self):
|
||||||
|
key = "action"
|
||||||
|
while True:
|
||||||
|
time_now = int(time.time())
|
||||||
|
if len(self.bulk) >= 10000 or time_now - self.ut >= 60:
|
||||||
|
self.flush()
|
||||||
|
|
||||||
|
try:
|
||||||
|
# 从列表左侧弹出元素
|
||||||
|
item = self.redis_cli.lpop(key)
|
||||||
|
if not item:
|
||||||
|
logger.Info("no data, sleep...")
|
||||||
|
time.sleep(0.5)
|
||||||
|
continue
|
||||||
|
msg_str = item.decode("utf-8")
|
||||||
|
msg = json.loads(msg_str)
|
||||||
|
action_str = safe_get_str(msg, "message")
|
||||||
|
action = json.loads(action_str)
|
||||||
|
self.bulk.append(action)
|
||||||
|
if len(self.bulk) % 100 == 0:
|
||||||
|
logger.Info("len(bulk): {}".format(len(self.bulk)))
|
||||||
|
except Exception as e:
|
||||||
|
logger.Error("panic: {}".format(str(e)))
|
||||||
|
|
||||||
|
# 等待一段时间再检查
|
||||||
|
# time.sleep(1)
|
||||||
|
|
||||||
|
|
||||||
|
s = S()
|
||||||
|
s.loop()
|
||||||
|
#
|
||||||
|
# lis = [1, 2, 3]
|
||||||
|
# while len(lis) > 0:
|
||||||
|
# print(lis.pop())
|
||||||
|
# print(lis)
|
||||||
|
#
|
||||||
|
# dt = datetime.datetime.fromtimestamp(int(time.time()))
|
||||||
|
#
|
||||||
|
# new_ym = "%d%02d" % (dt.year, dt.month)
|
||||||
|
# new_day = "%02d" % dt.day
|
||||||
|
#
|
||||||
|
# print(new_ym, new_day)
|
|
@ -6,8 +6,19 @@ log_dir = "."
|
||||||
logger = Logger(service_name, log_dir=log_dir, print_terminal=True)
|
logger = Logger(service_name, log_dir=log_dir, print_terminal=True)
|
||||||
|
|
||||||
|
|
||||||
|
def get_rank_host_cnt(rank):
|
||||||
|
if 0 <= rank <= 30:
|
||||||
|
return 30
|
||||||
|
elif 30 < rank <= 100:
|
||||||
|
return 10
|
||||||
|
elif 100 < rank <= 300:
|
||||||
|
return 3
|
||||||
|
else:
|
||||||
|
return 1
|
||||||
|
|
||||||
|
|
||||||
def check_wx_url(url):
|
def check_wx_url(url):
|
||||||
api_url = "http://wx.rrbay.com/pro/wxUrlCheck2.ashx?key=9dab4264f077aa3697d346f7ac1f5270&url=%s" % url
|
api_url = "http://wx.rrbay.com/pro/wxUrlCheck2.ashx?key=9dab4264f077aa3697d346f7ac1f5270&url=https://%s&mode=authkey1" % url
|
||||||
res = requests.get(api_url)
|
res = requests.get(api_url)
|
||||||
r = json.loads(res.text)
|
r = json.loads(res.text)
|
||||||
return r
|
return r
|
||||||
|
@ -15,15 +26,50 @@ def check_wx_url(url):
|
||||||
|
|
||||||
class S:
|
class S:
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
|
self.col_streamer = MongoDB(
|
||||||
|
host="mongodb://root:Wishpal2024@dds-bp1da1ddd62bede41.mongodb.rds.aliyuncs.com:3717,dds-bp1da1ddd62bede42.mongodb.rds.aliyuncs.com:3717/admin?replicaSet=mgset-77304659",
|
||||||
|
port=3717,
|
||||||
|
db="streamer",
|
||||||
|
collection="streamer"
|
||||||
|
)
|
||||||
self.col_share_url = MongoDB(
|
self.col_share_url = MongoDB(
|
||||||
host="mongodb://root:Wishpal2024@dds-bp1da1ddd62bede41.mongodb.rds.aliyuncs.com:3717,dds-bp1da1ddd62bede42.mongodb.rds.aliyuncs.com:3717/admin?replicaSet=mgset-77304659",
|
host="mongodb://root:Wishpal2024@dds-bp1da1ddd62bede41.mongodb.rds.aliyuncs.com:3717,dds-bp1da1ddd62bede42.mongodb.rds.aliyuncs.com:3717/admin?replicaSet=mgset-77304659",
|
||||||
port=3717,
|
port=3717,
|
||||||
db="share",
|
db="share",
|
||||||
collection="share_url"
|
collection="share_url"
|
||||||
)
|
)
|
||||||
|
self.col_streamer_share_url = MongoDB(
|
||||||
|
host="mongodb://root:Wishpal2024@dds-bp1da1ddd62bede41.mongodb.rds.aliyuncs.com:3717,dds-bp1da1ddd62bede42.mongodb.rds.aliyuncs.com:3717/admin?replicaSet=mgset-77304659",
|
||||||
|
port=3717,
|
||||||
|
db="share",
|
||||||
|
collection="streamer_share_url"
|
||||||
|
)
|
||||||
|
self.mysql_db_bi = Mysql(
|
||||||
|
"172.31.37.71", 3306, "bi", "root", "Wishpal@2023"
|
||||||
|
)
|
||||||
|
|
||||||
def __del__(self):
|
def __del__(self):
|
||||||
|
self.col_streamer.close()
|
||||||
self.col_share_url.close()
|
self.col_share_url.close()
|
||||||
|
self.col_streamer_share_url.close()
|
||||||
|
self.mysql_db_bi.close()
|
||||||
|
|
||||||
|
def get_streamer_ranks(self):
|
||||||
|
sql = '''
|
||||||
|
select * from vas_cur_streamer_income order by income desc
|
||||||
|
'''
|
||||||
|
rows = list(self.mysql_db_bi.query(sql))
|
||||||
|
return rows
|
||||||
|
|
||||||
|
def get_domain_host_map(self):
|
||||||
|
domain_host_map = dict()
|
||||||
|
docs = self.col_share_url.find({})
|
||||||
|
for doc in docs:
|
||||||
|
domain = safe_get_str(doc, "domain")
|
||||||
|
if domain not in domain_host_map.keys():
|
||||||
|
domain_host_map[domain] = list()
|
||||||
|
domain_host_map[domain].append(doc)
|
||||||
|
return domain_host_map
|
||||||
|
|
||||||
def proc(self):
|
def proc(self):
|
||||||
try:
|
try:
|
||||||
|
@ -40,6 +86,8 @@ class S:
|
||||||
code = safe_get_str(res, "Code")
|
code = safe_get_str(res, "Code")
|
||||||
if code == "002":
|
if code == "002":
|
||||||
return
|
return
|
||||||
|
if code == "101":
|
||||||
|
msg = safe_get_str(res, "Msg")
|
||||||
|
|
||||||
# 更新db
|
# 更新db
|
||||||
query = {
|
query = {
|
||||||
|
@ -59,6 +107,14 @@ class S:
|
||||||
|
|
||||||
|
|
||||||
s = S()
|
s = S()
|
||||||
while True:
|
# while True:
|
||||||
s.proc()
|
# s.proc()
|
||||||
time.sleep(21)
|
# time.sleep(21)
|
||||||
|
# print(check_wx_url("https://kx0jjwssu14s007.tiefen.club"))
|
||||||
|
# ranks = s.get_streamer_ranks()
|
||||||
|
# for rank in ranks:
|
||||||
|
# print(rank)
|
||||||
|
|
||||||
|
|
||||||
|
m = s.get_domain_host_map()
|
||||||
|
print(m)
|
||||||
|
|
|
@ -0,0 +1,4 @@
|
||||||
|
from lib.all import *
|
||||||
|
|
||||||
|
class S:
|
||||||
|
def __init__(self):
|
|
@ -0,0 +1,8 @@
|
||||||
|
from odps import ODPS
|
||||||
|
|
||||||
|
odps_access_id = 'LTAI5tMp5o4u6Twgm6hL9EQV'
|
||||||
|
odps_secret_key = 'O7xAsKMnnWHwrlfvka30v6yr13Qxa3'
|
||||||
|
|
||||||
|
|
||||||
|
def get_odps_db(project="tiefen_bigdata"):
|
||||||
|
return ODPS(odps_access_id, odps_secret_key, project)
|
|
@ -0,0 +1,104 @@
|
||||||
|
from lib.all import *
|
||||||
|
from cloudflare_manager import *
|
||||||
|
from namesilo_manager import *
|
||||||
|
import ningx_proxy_manager as npm
|
||||||
|
import string
|
||||||
|
import random
|
||||||
|
|
||||||
|
cf_manager = CloudflareManager()
|
||||||
|
ns_manager = NameSiloMgr()
|
||||||
|
|
||||||
|
service_name = 'log'
|
||||||
|
log_dir = '.'
|
||||||
|
logger = Logger(service_name, log_dir=log_dir)
|
||||||
|
|
||||||
|
|
||||||
|
def generate_random_string(length):
|
||||||
|
letters = string.ascii_lowercase + string.digits
|
||||||
|
return ''.join(random.choice(letters) for _ in range(length))
|
||||||
|
|
||||||
|
|
||||||
|
def proc():
|
||||||
|
# 获取所有cloudflare zone
|
||||||
|
cf_zones_resp = json.loads(cf_manager.zone_list().json())
|
||||||
|
cf_zones = safe_get_list(cf_zones_resp, "result")
|
||||||
|
cf_domain_zone_map = dict()
|
||||||
|
for cf_zone in cf_zones:
|
||||||
|
domain = safe_get_str(cf_zone, "name")
|
||||||
|
cf_domain_zone_map[domain] = cf_zone
|
||||||
|
# for k, v in cf_domain_zone_map.items():
|
||||||
|
# print(k, v)
|
||||||
|
|
||||||
|
# 获取nginx证书
|
||||||
|
ng_cert_map = npm.get_all_cert_map()
|
||||||
|
# for k, v in ng_cert_map.items():
|
||||||
|
# print(k, v)
|
||||||
|
|
||||||
|
col_share_url = MongoDB(
|
||||||
|
host="mongodb://root:Wishpal2024@dds-bp1da1ddd62bede41.mongodb.rds.aliyuncs.com:3717,dds-bp1da1ddd62bede42.mongodb.rds.aliyuncs.com:3717/admin?replicaSet=mgset-77304659",
|
||||||
|
port=3717,
|
||||||
|
db="share",
|
||||||
|
collection="share_url"
|
||||||
|
)
|
||||||
|
|
||||||
|
for domain, cf_zone in cf_domain_zone_map.items():
|
||||||
|
# 添加cf域名解析
|
||||||
|
zone_id = safe_get_str(cf_zone, "id")
|
||||||
|
if len(zone_id) <= 0:
|
||||||
|
continue
|
||||||
|
# print(zone_id)
|
||||||
|
|
||||||
|
# 获取域名对应的证书id
|
||||||
|
cert = safe_get_dict(ng_cert_map, domain)
|
||||||
|
cert_id = safe_get_int(cert, "id")
|
||||||
|
# print(zone_id, cert_id)
|
||||||
|
|
||||||
|
# 分享域名
|
||||||
|
share_l2_names = list()
|
||||||
|
for i in range(50):
|
||||||
|
random_str = generate_random_string(random.randint(8, 12))
|
||||||
|
share_l2_names.append(random_str)
|
||||||
|
|
||||||
|
# 要添加nginx域名解析的域名
|
||||||
|
need_add_nginx_anal_l2_names = list()
|
||||||
|
for l2_name in share_l2_names:
|
||||||
|
try:
|
||||||
|
cf_add_record_ret = json.loads(cf_manager.add_record(zone_id, "47.242.233.23", l2_name, "A").json())
|
||||||
|
ret_id = safe_get_str(cf_add_record_ret, "id")
|
||||||
|
if len(ret_id) <= 0:
|
||||||
|
logger.Error("cf_add_record fail, domain: {}, l2_name: {}, ret: {}".format(domain, l2_name, cf_add_record_ret))
|
||||||
|
continue
|
||||||
|
need_add_nginx_anal_l2_names.append(l2_name)
|
||||||
|
except Exception as e:
|
||||||
|
logger.Error("cf_add_record panic, domain: {}, l2_name: {}, err: {}".format(domain, l2_name, str(e)))
|
||||||
|
|
||||||
|
# 添加nginx域名解析
|
||||||
|
need_add_nginx_anal_domain_names = list()
|
||||||
|
for l2_name in need_add_nginx_anal_l2_names:
|
||||||
|
need_add_nginx_anal_domain_names.append("{}.{}".format(l2_name, domain))
|
||||||
|
batch_add_records_ret = npm.batch_add_records(need_add_nginx_anal_domain_names, "172.17.219.45", 3001, cert_id)
|
||||||
|
logger.Info("batch_add_records ok, len: {}, domains: {}, ret: {}".format(
|
||||||
|
len(need_add_nginx_anal_domain_names), need_add_nginx_anal_domain_names, batch_add_records_ret
|
||||||
|
))
|
||||||
|
|
||||||
|
# 添加mongodb
|
||||||
|
docs = list()
|
||||||
|
for domain_name in need_add_nginx_anal_domain_names:
|
||||||
|
doc = {
|
||||||
|
"_id": domain_name,
|
||||||
|
"ct": int(time.time()),
|
||||||
|
"ut": 0,
|
||||||
|
"status": "000",
|
||||||
|
"api_res": "",
|
||||||
|
"use_cnt": 0,
|
||||||
|
"domain": domain,
|
||||||
|
"l2_name": domain_name[:domain_name.find(".")],
|
||||||
|
}
|
||||||
|
docs.append(doc)
|
||||||
|
mongo_ret = col_share_url.insert_many(docs)
|
||||||
|
logger.Info("len(insert_ids): {}, ids: {}".format(len(mongo_ret.inserted_ids), mongo_ret.inserted_ids))
|
||||||
|
|
||||||
|
col_share_url.close()
|
||||||
|
|
||||||
|
|
||||||
|
proc()
|
|
@ -9,6 +9,13 @@ from lib.all import *
|
||||||
|
|
||||||
MiZhiBo_Top_Domain = "mizhibo.live"
|
MiZhiBo_Top_Domain = "mizhibo.live"
|
||||||
MiZhiBo_Cert_Id = 12
|
MiZhiBo_Cert_Id = 12
|
||||||
|
MiZhiBo_AK = "LTAI5t9GQLk8D63FPZFKiXMH"
|
||||||
|
MiZhiBo_Secret = "QPgrEowuYKEYD0vp8fnW0Egri8lu04"
|
||||||
|
|
||||||
|
TieFenClub_Top_Domain = "tiefen.club"
|
||||||
|
TieFenClub_Cert_Id = 15
|
||||||
|
TieFenClub_AK = "LTAI5tMp5o4u6Twgm6hL9EQV"
|
||||||
|
TieFenClub_Secret = "O7xAsKMnnWHwrlfvka30v6yr13Qxa3"
|
||||||
|
|
||||||
service_name = 'add_wx_share_url'
|
service_name = 'add_wx_share_url'
|
||||||
log_dir = '.'
|
log_dir = '.'
|
||||||
|
@ -80,12 +87,12 @@ def proc(cnt, top_dm):
|
||||||
)
|
)
|
||||||
|
|
||||||
for i in range(cnt):
|
for i in range(cnt):
|
||||||
l2_host = generate_random_string(19)
|
l2_host = generate_random_string(random.randint(15, 20))
|
||||||
|
|
||||||
# 添加域名解析
|
# 添加域名解析
|
||||||
add_domain_record(
|
add_domain_record(
|
||||||
"LTAI5t9GQLk8D63FPZFKiXMH",
|
TieFenClub_AK,
|
||||||
"QPgrEowuYKEYD0vp8fnW0Egri8lu04",
|
TieFenClub_Secret,
|
||||||
"cn-hangzhou",
|
"cn-hangzhou",
|
||||||
top_dm,
|
top_dm,
|
||||||
l2_host,
|
l2_host,
|
||||||
|
@ -95,7 +102,7 @@ def proc(cnt, top_dm):
|
||||||
|
|
||||||
# 添加nginx
|
# 添加nginx
|
||||||
dm = l2_host + "." + top_dm
|
dm = l2_host + "." + top_dm
|
||||||
res = add_wx_share_url_to_nginx(dm, "172.16.0.183", 3003, MiZhiBo_Cert_Id)
|
res = add_wx_share_url_to_nginx(dm, "172.16.0.183", 3003, TieFenClub_Cert_Id)
|
||||||
logger.Info(res)
|
logger.Info(res)
|
||||||
|
|
||||||
# 添加db
|
# 添加db
|
||||||
|
@ -115,4 +122,4 @@ def proc(cnt, top_dm):
|
||||||
col_share_url.close()
|
col_share_url.close()
|
||||||
|
|
||||||
|
|
||||||
proc(99, MiZhiBo_Top_Domain)
|
proc(2, TieFenClub_Top_Domain)
|
||||||
|
|
|
@ -0,0 +1,45 @@
|
||||||
|
from lib.all import *
|
||||||
|
import cloudflare
|
||||||
|
|
||||||
|
|
||||||
|
class CloudflareManager:
|
||||||
|
def __init__(self):
|
||||||
|
self.cf = cloudflare.Cloudflare(
|
||||||
|
api_email="chengdewangyue@outlook.com",
|
||||||
|
api_key="d03a3857ee796d8b8e584b8311127b334cc27"
|
||||||
|
)
|
||||||
|
|
||||||
|
def __del__(self):
|
||||||
|
self.cf.close()
|
||||||
|
|
||||||
|
def zone_list(self):
|
||||||
|
ret = self.cf.zones.list(
|
||||||
|
account={"id": "722b58c5ced87e7bfba175acb9a2a9d6"},
|
||||||
|
per_page=1000
|
||||||
|
)
|
||||||
|
return ret
|
||||||
|
|
||||||
|
def create_zone(self, domain):
|
||||||
|
ret = self.cf.zones.create(
|
||||||
|
account={"id": "722b58c5ced87e7bfba175acb9a2a9d6"},
|
||||||
|
name=domain
|
||||||
|
)
|
||||||
|
return ret
|
||||||
|
|
||||||
|
def add_record(self, zone_id, content, name, typ):
|
||||||
|
ret = self.cf.dns.records.create(
|
||||||
|
zone_id=zone_id,
|
||||||
|
content=content,
|
||||||
|
name=name,
|
||||||
|
type=typ,
|
||||||
|
proxied=False,
|
||||||
|
ttl=60
|
||||||
|
)
|
||||||
|
return ret
|
||||||
|
|
||||||
|
|
||||||
|
# cfm = CloudflareManager()
|
||||||
|
# ret = cfm.add_record("60abfd3b47de6e0830b413b9fa6e9e1c", "47.242.233.23", "95s35e8s", "A")
|
||||||
|
# print(ret.json())
|
||||||
|
# ret = cfm.zone_list().json()
|
||||||
|
# print(ret)
|
|
@ -0,0 +1,25 @@
|
||||||
|
import random
|
||||||
|
|
||||||
|
random.seed()
|
||||||
|
|
||||||
|
letters = "acdefghijklmnopqrstuvwxyz"
|
||||||
|
digits = "13567890"
|
||||||
|
|
||||||
|
base_domains = ["tiefen{}.top", "tiefen{}.click"]
|
||||||
|
|
||||||
|
idx = 0
|
||||||
|
for base_dm in base_domains:
|
||||||
|
for digit in digits:
|
||||||
|
for letter in letters:
|
||||||
|
idx += 1
|
||||||
|
random_letter1 = letters[random.randint(0, len(letters) - 1)]
|
||||||
|
random_letter2 = letters[random.randint(0, len(letters) - 1)]
|
||||||
|
ran = random.randint(0, 2)
|
||||||
|
if ran == 0:
|
||||||
|
dm = base_dm.format(digit + letter + random_letter1)
|
||||||
|
else:
|
||||||
|
dm = base_dm.format(digit + letter + random_letter1 + random_letter2)
|
||||||
|
print(dm)
|
||||||
|
|
||||||
|
if idx >= 70:
|
||||||
|
break
|
|
@ -0,0 +1,89 @@
|
||||||
|
import requests
|
||||||
|
|
||||||
|
from lib.all import *
|
||||||
|
from namesilo.core import NameSilo
|
||||||
|
|
||||||
|
namesilo_api_key = "8a5bd1e9d44a52f15897f03a2"
|
||||||
|
|
||||||
|
|
||||||
|
class NameSiloMgr:
|
||||||
|
def __init__(self):
|
||||||
|
self.client = NameSilo(token=namesilo_api_key, sandbox=False)
|
||||||
|
|
||||||
|
def delete_dns_record(self, domain, record_id):
|
||||||
|
url = "https://www.namesilo.com/api/dnsDeleteRecord?version=1&type=json&key={}&domain={}&rrid={}".format(
|
||||||
|
namesilo_api_key, domain, record_id
|
||||||
|
)
|
||||||
|
response = requests.get(url)
|
||||||
|
res = json.loads(response.text)
|
||||||
|
return res
|
||||||
|
|
||||||
|
def list_registered_nameservers(self, domain):
|
||||||
|
url = "https://www.namesilo.com/api/listRegisteredNameServers?version=1&type=json&key={}&domain={}".format(
|
||||||
|
namesilo_api_key, domain
|
||||||
|
)
|
||||||
|
response = requests.get(url)
|
||||||
|
res = json.loads(response.text)
|
||||||
|
return res
|
||||||
|
|
||||||
|
def delete_registered_nameserver(self, domain, cur_host):
|
||||||
|
url = "https://www.namesilo.com/api/deleteRegisteredNameServer?version=1&type=json&key={}&domain={}¤t_host={}".format(
|
||||||
|
namesilo_api_key, domain, cur_host
|
||||||
|
)
|
||||||
|
response = requests.get(url)
|
||||||
|
res = json.loads(response.text)
|
||||||
|
return res
|
||||||
|
|
||||||
|
def change_nameservers(self, domain, ns_list):
|
||||||
|
url = "https://www.namesilo.com/api/changeNameServers?version=1&type=json&key={}&domain={}".format(
|
||||||
|
namesilo_api_key, domain
|
||||||
|
)
|
||||||
|
if len(ns_list) >= 13:
|
||||||
|
ns_list = ns_list[:13]
|
||||||
|
idx = 0
|
||||||
|
for ns in ns_list:
|
||||||
|
idx += 1
|
||||||
|
url += "&ns{}={}".format(idx, ns)
|
||||||
|
# print(url)
|
||||||
|
response = requests.get(url)
|
||||||
|
res = json.loads(response.text)
|
||||||
|
return res
|
||||||
|
|
||||||
|
def del_all_domain_dns_record(self):
|
||||||
|
all_records = list()
|
||||||
|
for item in self.client.list_domains():
|
||||||
|
# print(type(item), item)
|
||||||
|
domain = safe_get_str(item, "#text")
|
||||||
|
try:
|
||||||
|
records = self.client.list_dns_records(domain)
|
||||||
|
if isinstance(records, list):
|
||||||
|
for record in records:
|
||||||
|
record_new = record
|
||||||
|
record_new["domain"] = domain
|
||||||
|
all_records.append(record_new)
|
||||||
|
elif isinstance(records, dict):
|
||||||
|
record_new = records
|
||||||
|
record_new["domain"] = domain
|
||||||
|
all_records.append(record_new)
|
||||||
|
else:
|
||||||
|
print("valid", records)
|
||||||
|
|
||||||
|
except Exception as e:
|
||||||
|
print(str(e))
|
||||||
|
|
||||||
|
for r in all_records:
|
||||||
|
domain = safe_get_str(r, "domain")
|
||||||
|
record_id = safe_get_str(r, "record_id")
|
||||||
|
ret = self.delete_dns_record(domain, record_id)
|
||||||
|
print(domain, record_id, ret)
|
||||||
|
|
||||||
|
# def change_all_domain_nameservers(self):
|
||||||
|
# for item in self.client.list_domains():
|
||||||
|
# # print(type(item), item)
|
||||||
|
# domain = safe_get_str(item, "#text")
|
||||||
|
# ret = self.change_nameservers(domain)
|
||||||
|
# print(domain, ret)
|
||||||
|
|
||||||
|
#
|
||||||
|
# s = NameSiloMgr()
|
||||||
|
# s.change_nameservers("xxxx.aa", ["1111111111111111111.cc", "222222222222.cc"])
|
|
@ -0,0 +1,116 @@
|
||||||
|
import json
|
||||||
|
|
||||||
|
from lib.all import *
|
||||||
|
|
||||||
|
|
||||||
|
def get_all_cert_map():
|
||||||
|
headers = {
|
||||||
|
'Accept': 'application/json, text/javascript, */*; q=0.01',
|
||||||
|
'Accept-Language': 'zh-CN,zh;q=0.9,ko;q=0.8,ja;q=0.7,en;q=0.6',
|
||||||
|
'Authorization': 'Bearer eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJhcGkiLCJzY29wZSI6WyJ1c2VyIl0sImF0dHJzIjp7ImlkIjoxfSwiZXhwaXJlc0luIjoiMWQiLCJqdGkiOiJndVVDWnNjbmE1TzljdzFoIiwiaWF0IjoxNzMzOTc2OTU5LCJleHAiOjE3MzQwNjMzNTl9.TWcVzTMVR1wgphBYYfuH7BhOkrL8vqolzLBvgRU9f5KvkWOWLeF2g0P69YefqQHc32NH6YB81PWUlr_ZFQeeMnGDmcPGk0HvzZawMau44GKCB7iADFpGwWhrQvxYQuvm_f6KeYvLoOJsfTketHu_YoFNlPBhgRJ83uyLzmgd8w2-gdgvWuxHPbDkIO_k3eyw5rqSxjS6lNlo7SlyBCSW3FTgRcOAhOWI0uf87s-RwTHpZxLTDje6QH4PKYMUOJCzhojoxl5PxgDerA5ru0M13bdTAnBGMYjYHP_2X7Xa9DgwZ0yMxDLLIhnrntXQzKFEjv79alehPZe6ENQTHJvNBQ',
|
||||||
|
'Connection': 'keep-alive',
|
||||||
|
'Content-Type': 'application/json; charset=UTF-8',
|
||||||
|
'Referer': 'http://47.242.233.23:81/nginx/certificates',
|
||||||
|
'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.0.0 Safari/537.36',
|
||||||
|
}
|
||||||
|
|
||||||
|
params = {
|
||||||
|
'expand': 'owner',
|
||||||
|
}
|
||||||
|
|
||||||
|
response = requests.get('http://47.242.233.23:81/api/nginx/certificates', params=params, headers=headers, verify=False)
|
||||||
|
res = json.loads(response.text)
|
||||||
|
|
||||||
|
cert_map = dict()
|
||||||
|
for cert in res:
|
||||||
|
domain_names = safe_get_list(cert, "domain_names")
|
||||||
|
for domain_name in domain_names:
|
||||||
|
dmn = domain_name.replace("*.", "")
|
||||||
|
cert_map[dmn] = cert
|
||||||
|
|
||||||
|
return cert_map
|
||||||
|
|
||||||
|
|
||||||
|
def batch_apply_cert(domain_names):
|
||||||
|
headers = {
|
||||||
|
'Accept': 'application/json, text/javascript, */*; q=0.01',
|
||||||
|
'Accept-Language': 'zh-CN,zh;q=0.9,ko;q=0.8,ja;q=0.7,en;q=0.6',
|
||||||
|
'Authorization': 'Bearer eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJhcGkiLCJzY29wZSI6WyJ1c2VyIl0sImF0dHJzIjp7ImlkIjoxfSwiZXhwaXJlc0luIjoiMWQiLCJqdGkiOiJndVVDWnNjbmE1TzljdzFoIiwiaWF0IjoxNzMzOTc2OTU5LCJleHAiOjE3MzQwNjMzNTl9.TWcVzTMVR1wgphBYYfuH7BhOkrL8vqolzLBvgRU9f5KvkWOWLeF2g0P69YefqQHc32NH6YB81PWUlr_ZFQeeMnGDmcPGk0HvzZawMau44GKCB7iADFpGwWhrQvxYQuvm_f6KeYvLoOJsfTketHu_YoFNlPBhgRJ83uyLzmgd8w2-gdgvWuxHPbDkIO_k3eyw5rqSxjS6lNlo7SlyBCSW3FTgRcOAhOWI0uf87s-RwTHpZxLTDje6QH4PKYMUOJCzhojoxl5PxgDerA5ru0M13bdTAnBGMYjYHP_2X7Xa9DgwZ0yMxDLLIhnrntXQzKFEjv79alehPZe6ENQTHJvNBQ',
|
||||||
|
'Connection': 'keep-alive',
|
||||||
|
'Content-Type': 'application/json; charset=UTF-8',
|
||||||
|
'Origin': 'http://47.242.233.23:81',
|
||||||
|
'Referer': 'http://47.242.233.23:81/nginx/certificates',
|
||||||
|
'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.0.0 Safari/537.36',
|
||||||
|
}
|
||||||
|
|
||||||
|
json_data = {
|
||||||
|
'domain_names': domain_names,
|
||||||
|
'meta': {
|
||||||
|
'letsencrypt_email': 'jueweijue@gmail.com',
|
||||||
|
'dns_challenge': True,
|
||||||
|
'dns_provider': 'cloudflare',
|
||||||
|
'dns_provider_credentials': '# Cloudflare API token\r\ndns_cloudflare_api_token=OYrExEPmDzx5lYnFrg9c8qU05k-3SgjVe3Us6NoL',
|
||||||
|
'letsencrypt_agree': True,
|
||||||
|
},
|
||||||
|
'provider': 'letsencrypt',
|
||||||
|
}
|
||||||
|
|
||||||
|
response = requests.post('http://47.242.233.23:81/api/nginx/certificates', headers=headers, json=json_data, verify=False)
|
||||||
|
res = json.loads(response.text)
|
||||||
|
return res
|
||||||
|
|
||||||
|
|
||||||
|
def batch_add_records(domain_names, forward_host, forward_port, cert_id):
|
||||||
|
headers = {
|
||||||
|
'Accept': 'application/json, text/javascript, */*; q=0.01',
|
||||||
|
'Accept-Language': 'zh-CN,zh;q=0.9,ko;q=0.8,ja;q=0.7,en;q=0.6',
|
||||||
|
'Authorization': 'Bearer eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJhcGkiLCJzY29wZSI6WyJ1c2VyIl0sImF0dHJzIjp7ImlkIjoxfSwiZXhwaXJlc0luIjoiMWQiLCJqdGkiOiI3U05KaHVLOWR0YjdmRExDIiwiaWF0IjoxNzMzOTgyMTMyLCJleHAiOjE3MzQwNjg1MzJ9.mhHrgOATwgRQQ0GI3opDw-qck_TV3c7Ka4TEkDi0ORO3e8iKcEsELd3zfgOzEV5oLHWoGUcOpOn2LPSp4GLMqzbmDE4PWQ4xsAbgT-LCSaN3NRTGGo4XwMkmAYIRrPRIWTqlaR2FwXPYVJocVNbKm5TWJF57dmjFQPrikAxZEJfXewpGPSCF6qnSlCQeFK_lx1um_XIkLxnBLnGy3KsGMhcOtgJ4wT8DRiyd2htYztcv-4TFzhyDsc2U2ge6OfXhPVTHILEPPiCXSgBPjlEx63ilG2w6vaUam1cafRIOgDEqhVT730NmhZVSD8hmRym8t8IPf_6fMgf3Mlv7GrcEyw',
|
||||||
|
'Connection': 'keep-alive',
|
||||||
|
'Content-Type': 'application/json; charset=UTF-8',
|
||||||
|
'Origin': 'http://47.242.233.23:81',
|
||||||
|
'Referer': 'http://47.242.233.23:81/nginx/proxy',
|
||||||
|
'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.0.0 Safari/537.36',
|
||||||
|
}
|
||||||
|
|
||||||
|
json_data = {
|
||||||
|
'domain_names': domain_names,
|
||||||
|
'forward_scheme': 'http',
|
||||||
|
'forward_host': forward_host,
|
||||||
|
'forward_port': forward_port,
|
||||||
|
'allow_websocket_upgrade': True,
|
||||||
|
'access_list_id': '0',
|
||||||
|
'certificate_id': cert_id,
|
||||||
|
'ssl_forced': True,
|
||||||
|
'meta': {
|
||||||
|
'letsencrypt_agree': False,
|
||||||
|
'dns_challenge': False,
|
||||||
|
},
|
||||||
|
'advanced_config': '',
|
||||||
|
'locations': [],
|
||||||
|
'block_exploits': False,
|
||||||
|
'caching_enabled': False,
|
||||||
|
'http2_support': False,
|
||||||
|
'hsts_enabled': False,
|
||||||
|
'hsts_subdomains': False,
|
||||||
|
}
|
||||||
|
response = requests.post('http://47.242.233.23:81/api/nginx/proxy-hosts', headers=headers, json=json_data, verify=False)
|
||||||
|
res = json.loads(response.text)
|
||||||
|
return res
|
||||||
|
|
||||||
|
# cert_map = get_all_cert_map()
|
||||||
|
# print(cert_map["*.tiefen888.top"])
|
||||||
|
|
||||||
|
#
|
||||||
|
# dms = list()
|
||||||
|
# ns_domains = ns_manager.client.list_domains()
|
||||||
|
# for nsdm in ns_domains:
|
||||||
|
# dm = "*." + safe_get_str(nsdm, "#text")
|
||||||
|
# if dm in cert_map.keys():
|
||||||
|
# print(dm)
|
||||||
|
# continue
|
||||||
|
# dms.append(dm)
|
||||||
|
#
|
||||||
|
# print(apply_cert(dms))
|
||||||
|
|
||||||
|
#
|
||||||
|
# print(cert_map)
|
|
@ -0,0 +1,65 @@
|
||||||
|
from cloudflare_manager import *
|
||||||
|
from namesilo_manager import *
|
||||||
|
|
||||||
|
cf_manager = CloudflareManager()
|
||||||
|
ns_manager = NameSiloMgr()
|
||||||
|
|
||||||
|
# 需要重新设置nameserver的域名
|
||||||
|
# 已成功激活的域名
|
||||||
|
# 需要添加并激活的域名
|
||||||
|
|
||||||
|
# cloudflare 中已存在的域名
|
||||||
|
list_df_res = json.loads(cf_manager.zone_list().json())
|
||||||
|
list_websites = safe_get_list(list_df_res, "result")
|
||||||
|
cf_domain_stat_map = dict()
|
||||||
|
for web in list_websites:
|
||||||
|
domain = safe_get_str(web, "name")
|
||||||
|
cf_domain_stat_map[domain] = web
|
||||||
|
|
||||||
|
ns_domains = ns_manager.client.list_domains()
|
||||||
|
idxx = 0
|
||||||
|
for ns_domain in ns_domains:
|
||||||
|
idxx += 1
|
||||||
|
domain = safe_get_str(ns_domain, "#text")
|
||||||
|
|
||||||
|
cf_stat = safe_get_dict(cf_domain_stat_map, domain)
|
||||||
|
status = safe_get_str(cf_stat, "status")
|
||||||
|
print(idxx, domain, status)
|
||||||
|
if status == "active":
|
||||||
|
continue
|
||||||
|
if len(status) > 0:
|
||||||
|
continue
|
||||||
|
|
||||||
|
# 如果不在cloudflare里面,在cloudflare创建zone
|
||||||
|
if domain not in cf_domain_stat_map.keys():
|
||||||
|
cf_stat = json.loads(cf_manager.create_zone(domain).json())
|
||||||
|
|
||||||
|
# 从namesilo删除域名解析
|
||||||
|
all_ns_dns_records = list()
|
||||||
|
try:
|
||||||
|
ns_dns_records = ns_manager.client.list_dns_records(domain)
|
||||||
|
if isinstance(ns_dns_records, list):
|
||||||
|
for record in ns_dns_records:
|
||||||
|
record_new = record
|
||||||
|
record_new["domain"] = domain
|
||||||
|
all_ns_dns_records.append(record_new)
|
||||||
|
elif isinstance(ns_dns_records, dict):
|
||||||
|
record_new = ns_dns_records
|
||||||
|
record_new["domain"] = domain
|
||||||
|
all_ns_dns_records.append(record_new)
|
||||||
|
else:
|
||||||
|
print(idxx, domain, "invalid", ns_dns_records)
|
||||||
|
except Exception as e:
|
||||||
|
print(idxx, domain, "invalid", str(e))
|
||||||
|
|
||||||
|
for r in all_ns_dns_records:
|
||||||
|
domain = safe_get_str(r, "domain")
|
||||||
|
record_id = safe_get_str(r, "record_id")
|
||||||
|
ret = ns_manager.delete_dns_record(domain, record_id)
|
||||||
|
print(idxx, domain, record_id, ret)
|
||||||
|
|
||||||
|
# 把namesilo nameserver替换成 cf的nameservers
|
||||||
|
cf_nameservers = safe_get_list(cf_stat, "name_servers")
|
||||||
|
print(idxx, domain, cf_nameservers)
|
||||||
|
chane_nss_ret = ns_manager.change_nameservers(domain, cf_nameservers)
|
||||||
|
print(idxx, domain, cf_nameservers, chane_nss_ret)
|
|
@ -0,0 +1,41 @@
|
||||||
|
import asyncio
|
||||||
|
import websockets
|
||||||
|
|
||||||
|
|
||||||
|
async def websocket_client(uri):
|
||||||
|
"""
|
||||||
|
A simple WebSocket client that connects to a specified URI,
|
||||||
|
sends a message, receives data, and prints status codes.
|
||||||
|
"""
|
||||||
|
try:
|
||||||
|
async with websockets.connect(uri) as websocket:
|
||||||
|
print(f"WebSocket connection established. Status code: {websocket.response.status_code}")
|
||||||
|
|
||||||
|
message = "Hello from client!"
|
||||||
|
await websocket.send(message)
|
||||||
|
print(f"Sent message: {message}")
|
||||||
|
|
||||||
|
try:
|
||||||
|
async for message in websocket: # Iterate through incoming messages
|
||||||
|
print(f"Received message: {message}")
|
||||||
|
except websockets.exceptions.ConnectionClosedError as e:
|
||||||
|
print(f"Connection closed with code {e.code} and reason: {e.reason}")
|
||||||
|
except Exception as e:
|
||||||
|
print(f"An unexpected error occurred: {e}")
|
||||||
|
|
||||||
|
except websockets.exceptions.InvalidStatusCode as e:
|
||||||
|
print(f"Connection failed with status code {e.status_code} and reason: {str(e)}")
|
||||||
|
except OSError as e:
|
||||||
|
print(f"OSError: {e}") # Handle potential OS errors like connection refused
|
||||||
|
except Exception as e:
|
||||||
|
print(f"An unexpected error occurred during connection: {e}")
|
||||||
|
|
||||||
|
|
||||||
|
async def main():
|
||||||
|
uri = "wss://wsdebug.tiefen.fun/ws" # Example WebSocket echo server
|
||||||
|
# uri = "wss://your_websocket_server_url" # Replace with your server URL if needed. Note 'wss' for secure connections.
|
||||||
|
await websocket_client(uri)
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
asyncio.run(main())
|
48
ttt/x.py
48
ttt/x.py
|
@ -1,9 +1,43 @@
|
||||||
from lib.all import *
|
import requests
|
||||||
|
|
||||||
st = get_today_zero_time() - 86400 * 7
|
cookies = {
|
||||||
et = st + 86400
|
'mid': '43',
|
||||||
|
'token': 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJhdXRob3JpemVkIjp0cnVlLCJtaWQiOjQzLCJ0b2tlbl91dWlkIjoxODY2MDU1MDA0MTU1MDQzODQwfQ.NJRWK6o23nhPjnFCZz20N0gnjuLW8OD3rc7xRymAnzk',
|
||||||
|
}
|
||||||
|
|
||||||
print(
|
headers = {
|
||||||
get_time_str_by_ts(st),
|
'accept': '*/*',
|
||||||
get_time_str_by_ts(et)
|
'accept-language': 'zh-CN,zh;q=0.9,ko;q=0.8,ja;q=0.7,en;q=0.6',
|
||||||
)
|
'content-type': 'application/json',
|
||||||
|
# 'cookie': 'mid=43; token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJhdXRob3JpemVkIjp0cnVlLCJtaWQiOjQzLCJ0b2tlbl91dWlkIjoxODY2MDU1MDA0MTU1MDQzODQwfQ.NJRWK6o23nhPjnFCZz20N0gnjuLW8OD3rc7xRymAnzk',
|
||||||
|
'origin': 'https://testapp.tiefen.fun',
|
||||||
|
'priority': 'u=1, i',
|
||||||
|
'referer': 'https://testapp.tiefen.fun/login',
|
||||||
|
'sec-ch-ua': '"Google Chrome";v="131", "Chromium";v="131", "Not_A Brand";v="24"',
|
||||||
|
'sec-ch-ua-mobile': '?0',
|
||||||
|
'sec-ch-ua-platform': '"macOS"',
|
||||||
|
'sec-fetch-dest': 'empty',
|
||||||
|
'sec-fetch-mode': 'cors',
|
||||||
|
'sec-fetch-site': 'same-origin',
|
||||||
|
'user-agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.0.0 Safari/537.36',
|
||||||
|
'x-req-source-tf': 'wittgenstein',
|
||||||
|
}
|
||||||
|
|
||||||
|
json_data = {
|
||||||
|
'b_mid': 43,
|
||||||
|
'b_ch': 'h5',
|
||||||
|
'b_ts': 1734078412314,
|
||||||
|
'b_token': 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJhdXRob3JpemVkIjp0cnVlLCJtaWQiOjQzLCJ0b2tlbl91dWlkIjoxODY2MDU1MDA0MTU1MDQzODQwfQ.NJRWK6o23nhPjnFCZz20N0gnjuLW8OD3rc7xRymAnzk',
|
||||||
|
'b_did': 'Mozilla/5.0 (Macintosh; Intel Ma',
|
||||||
|
'mobile_phone': 'D1dT7zvxB3HvyHqqB6fzTU/pl1G++EmgJZPcSWkMpJxUa2VtL1Szg+rlFP4ytbsCIh/FLhncOffT4r/N4Z4AZw==',
|
||||||
|
'region_code': '86',
|
||||||
|
'password': 'dec61c167c886f5382b0d317eeab5008',
|
||||||
|
}
|
||||||
|
|
||||||
|
response = requests.post('https://testapp.tiefen.fun/api/login/login_by_pswd', cookies=cookies, headers=headers, json=json_data)
|
||||||
|
print(response.headers)
|
||||||
|
|
||||||
|
# Note: json_data will not be serialized by requests
|
||||||
|
# exactly as it was in the original request.
|
||||||
|
#data = '{"b_mid":43,"b_ch":"h5","b_ts":1734078412314,"b_token":"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJhdXRob3JpemVkIjp0cnVlLCJtaWQiOjQzLCJ0b2tlbl91dWlkIjoxODY2MDU1MDA0MTU1MDQzODQwfQ.NJRWK6o23nhPjnFCZz20N0gnjuLW8OD3rc7xRymAnzk","b_did":"Mozilla/5.0 (Macintosh; Intel Ma","mobile_phone":"D1dT7zvxB3HvyHqqB6fzTU/pl1G++EmgJZPcSWkMpJxUa2VtL1Szg+rlFP4ytbsCIh/FLhncOffT4r/N4Z4AZw==","region_code":"86","password":"dec61c167c886f5382b0d317eeab5008"}'
|
||||||
|
#response = requests.post('https://testapp.tiefen.fun/api/login/login_by_pswd', cookies=cookies, headers=headers, data=data)
|
||||||
|
|
|
@ -255,7 +255,7 @@ class S:
|
||||||
ch_list_db.append(ch)
|
ch_list_db.append(ch)
|
||||||
ch_list = ch_list_income(ch_list_db)
|
ch_list = ch_list_income(ch_list_db)
|
||||||
|
|
||||||
csv_w = Csv("4104838_11月_主播收益_.csv", ["时间", "钻石变化", "描述"])
|
csv_w = Csv("352039_11月_主播收益_.csv", ["时间", "钻石变化", "描述"])
|
||||||
for ch in ch_list:
|
for ch in ch_list:
|
||||||
d = [
|
d = [
|
||||||
get_time_str_by_ts(ch.ct), ch.change, ch.desc,
|
get_time_str_by_ts(ch.ct), ch.change, ch.desc,
|
||||||
|
@ -265,7 +265,7 @@ class S:
|
||||||
|
|
||||||
s = S()
|
s = S()
|
||||||
s.proc(
|
s.proc(
|
||||||
954725,
|
31476,
|
||||||
get_ts_by_str("2024-11-01 00:00:00"),
|
get_ts_by_str("2024-11-01 00:00:00"),
|
||||||
get_ts_by_str("2024-12-01 00:00:00"),
|
get_ts_by_str("2024-12-01 00:00:00"),
|
||||||
)
|
)
|
||||||
|
|
Loading…
Reference in New Issue