This commit is contained in:
4532sde 2023-12-06 20:19:43 +08:00 committed by GitHub
commit 11049de73b
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 52 additions and 38 deletions

View File

@ -13,10 +13,10 @@ from account import get_account_list
class Genshin:
def __init__(self) -> None:
self.headers = {}
self.headers.update(setting.headers)
self.headers.update(setting.headersys)
self.headers['DS'] = tools.get_ds(web=True)
self.headers['Referer'] = 'https://webstatic.mihoyo.com/bbs/event/signin-ys/index.html?bbs_auth_required=true' \
f'&act_id={setting.genshin_Act_id}&utm_source=bbs&utm_medium=mys&utm_campaign=icon'
self.headers['Referer'] = "https://act.mihoyo.com/"
self.headers['Origin'] = "https://act.mihoyo.com"
self.headers['Cookie'] = config.config["account"]["cookie"]
self.headers['x-rpc-device_id'] = tools.get_device_id()
self.headers['User-Agent'] = tools.get_useragent()
@ -47,12 +47,10 @@ class Genshin:
return data["data"]
def check_in(self, account):
header = {}
header.update(self.headers)
for i in range(4):
if i != 0:
log.info(f'触发验证码,即将进行第{i}次重试最多3次')
req = http.post(url=setting.genshin_Signurl, headers=header,
req = http.post(setting.genshin_Signurl, headers=self.headers,
json={'act_id': setting.genshin_Act_id, 'region': account[2], 'uid': account[1]})
if req.status_code == 429:
time.sleep(10) # 429同ip请求次数过多尝试sleep10s进行解决
@ -62,9 +60,9 @@ class Genshin:
if data["retcode"] == 0 and data["data"]["success"] == 1:
validate = captcha.game_captcha(data["data"]["gt"], data["data"]["challenge"])
if validate is not None:
header["x-rpc-challenge"] = data["data"]["challenge"]
header["x-rpc-validate"] = validate
header["x-rpc-seccode"] = f'{validate}|jordan'
self.headers["x-rpc-challenge"] = data["data"]["challenge"]
self.headers["x-rpc-validate"] = validate
self.headers["x-rpc-seccode"] = f'{validate}|jordan'
time.sleep(random.randint(6, 15))
else:
break
@ -80,33 +78,30 @@ class Genshin:
log.info(f"正在为旅行者{i[0]}进行签到...")
time.sleep(random.randint(2, 8))
is_data = self.is_sign(region=i[2], uid=i[1])
if is_data["first_bind"]:
log.warning(f"旅行者{i[0]}是第一次绑定米游社,请先手动签到一次")
sign_days = is_data["total_sign_day"] - 1
ok = True
if is_data["is_sign"]:
log.info(f"旅行者{i[0]}今天已经签到过了~\r\n今天获得的奖励是{tools.get_item(self.checkin_rewards[sign_days])}")
sign_days += 1
else:
sign_days = is_data["total_sign_day"] - 1
ok = True
if is_data["is_sign"]:
log.info(f"旅行者{i[0]}今天已经签到过了~\r\n今天获得的奖励是{tools.get_item(self.checkin_rewards[sign_days])}")
sign_days += 1
else:
time.sleep(random.randint(2, 8))
req = self.check_in(i)
if req.status_code != 429:
data = req.json()
if data["retcode"] == 0 and data["data"]["success"] == 0:
log.info(f"旅行者{i[0]}签到成功~\r\n今天获得的奖励是"
f"{tools.get_item(self.checkin_rewards[0 if sign_days == 0 else sign_days + 1])}")
sign_days += 2
elif data["retcode"] == -5003:
log.info(
f"旅行者{i[0]}今天已经签到过了~\r\n今天获得的奖励是{tools.get_item(self.checkin_rewards[sign_days])}")
else:
s = "账号签到失败!"
if data["data"] != "" and data.get("data").get("success", -1):
s += "原因: 验证码\njson信息:" + req.text
log.warning(s)
ok = False
time.sleep(random.randint(2, 8))
req = self.check_in(i)
if req.status_code != 429:
data = req.json()
if data["retcode"] == 0 and data["data"]["success"] == 0:
log.info(f"旅行者{i[0]}签到成功~\r\n今天获得的奖励是"
f"{tools.get_item(self.checkin_rewards[0 if sign_days == 0 else sign_days + 1])}")
sign_days += 2
elif data["retcode"] == -5003:
log.info(
f"旅行者{i[0]}今天已经签到过了~\r\n今天获得的奖励是{tools.get_item(self.checkin_rewards[sign_days])}")
else:
s = "账号签到失败!"
if data["data"] != "" and data.get("data").get("success", -1):
s += "原因: 验证码\njson信息:" + req.text
log.warning(s)
ok = False
else:
ok = False
data = {}
if ok:

View File

@ -83,6 +83,25 @@ headers = {
'x-rpc-device_id': ""
}
headersys = {
'Accept': 'application/json, text/plain, */*',
'DS': "",
"x-rpc-signgame": "hk4e" ,
"x-rpc-channel": "miyousheluodi",
'Origin': "https://act.mihoyo.com",
'Referer' :"https://act.mihoyo.com/",
'x-rpc-app_version': mihoyobbs_version,
'User-Agent': 'Mozilla/5.0 (Linux; Android 12; Unspecified Device) AppleWebKit/537.36 (KHTML, like Gecko) '
f'Version/4.0 Chrome/103.0.5060.129 Mobile Safari/537.36 miHoYoBBS/{mihoyobbs_version}',
'x-rpc-client_type': mihoyobbs_Client_type_web,
'Referer': '',
'Accept-Encoding': 'gzip, deflate',
'Accept-Language': 'zh-CN,en-US;q=0.8',
'X-Requested-With': 'com.mihoyo.hyperion',
"Cookie": "",
'x-rpc-device_id': ""
}
# 通用设置
bbs_api = "https://bbs-api.mihoyo.com"
web_api = "https://api-takumi.mihoyo.com"
@ -119,10 +138,10 @@ tearsofthemis_Is_signurl = honkai2_Is_signurl
tearsofthemis_Sign_url = honkai2_Sign_url # 和二崩完全一致
# 原神自动签到相关的设置
genshin_Act_id = "e202009291139501"
genshin_checkin_rewards = f'{web_api}/event/bbs_sign_reward/home?act_id={genshin_Act_id}'
genshin_Is_signurl = web_api + "/event/bbs_sign_reward/info?act_id={}&region={}&uid={}"
genshin_Signurl = web_api + "/event/bbs_sign_reward/sign"
genshin_Act_id = "e202311201442471"
genshin_checkin_rewards = f'{web_api}/event/luna/home?lang=zh-cn&act_id={genshin_Act_id}'
genshin_Is_signurl = web_api + "/event/luna/info?lang=zh-cn&act_id={}&region={}&uid={}"
genshin_Signurl = web_api + "/event/luna/sign"
# 云原神相关api
cloud_genshin_Api = "https://api-cloudgame.mihoyo.com"