更新
This commit is contained in:
@@ -64,8 +64,15 @@ class DouyinAuth:
|
||||
self.msToken = None
|
||||
self.web_id = None
|
||||
self.source_ip = ""
|
||||
self.user_agent = None
|
||||
|
||||
def perepare_auth(self, cookieStr: str, web_protect_: str = "", keys_: str = ""):
|
||||
def perepare_auth(
|
||||
self,
|
||||
cookieStr: str,
|
||||
web_protect_: str = "",
|
||||
keys_: str = "",
|
||||
user_agent: str = "",
|
||||
):
|
||||
self.cookie = trans_cookies(cookieStr)
|
||||
self.cookie_str = cookieStr
|
||||
self.msToken = self.cookie["msToken"] if "msToken" in self.cookie else generate_msToken()
|
||||
@@ -89,6 +96,11 @@ class DouyinAuth:
|
||||
except Exception as e:
|
||||
logger.debug(f"keys parse failed: {e}")
|
||||
|
||||
if user_agent:
|
||||
# 让签名上下文记住调用方 UA:query_my_uid / generate_webid 等后续
|
||||
# 请求会复用它,避免退回硬编码 DEFAULT_USER_AGENT 造成 UA 不一致。
|
||||
self.user_agent = user_agent
|
||||
|
||||
def is_sign_ready(self) -> bool:
|
||||
return bool(
|
||||
self.private_key
|
||||
@@ -109,9 +121,11 @@ class DouyinAuth:
|
||||
session.cookie_header(),
|
||||
session.web_protect_str,
|
||||
session.keys_str,
|
||||
user_agent=session.user_agent or DEFAULT_USER_AGENT,
|
||||
)
|
||||
auth.web_id = session.web_id or session.device_id or None
|
||||
auth.user_agent = session.user_agent or DEFAULT_USER_AGENT
|
||||
# device_id 是设备注册号(query/user 的 id),不是账号 UID;
|
||||
# my_uid 只作为最后兜底,由 resolve_proto_device_id 内部处理。
|
||||
auth.device_id = resolve_proto_device_id(
|
||||
session.device_id, session.web_id, session.my_uid
|
||||
)
|
||||
@@ -139,9 +153,10 @@ class DouyinAuth:
|
||||
return self.uid
|
||||
|
||||
def query_my_uid(self) -> int:
|
||||
ua = self.user_agent or DEFAULT_USER_AGENT
|
||||
url = 'https://www.douyin.com/aweme/v1/web/query/user/'
|
||||
headers = {
|
||||
"User-Agent": DEFAULT_USER_AGENT,
|
||||
"User-Agent": ua,
|
||||
"Referer": "https://www.douyin.com/",
|
||||
"Accept": "application/json, text/plain, */*",
|
||||
}
|
||||
@@ -156,7 +171,7 @@ class DouyinAuth:
|
||||
"msToken": self.msToken
|
||||
}
|
||||
query = splice_url(params)
|
||||
abogus = generate_a_bogus(query, user_agent=DEFAULT_USER_AGENT)
|
||||
abogus = generate_a_bogus(query, user_agent=ua)
|
||||
params['a_bogus'] = abogus
|
||||
|
||||
with source_bound_requests_session(self.source_ip) as client:
|
||||
|
||||
Reference in New Issue
Block a user