最近在写一个抢抖音直播间进房第一名的脚本,我自己用大号开直播小号使用脚本进入直播间发现,能够正常进入直播间,但在一分半左右的时候小号就在直播伴侣的观众列表上消失了。关播后发现观看时长也只有一秒钟,也就是只统计了进房请求发送到抖音服务器上的那一下。所以我想问是否有业界专家知道抖音用户是怎么维持在直播间的,服务器怎么判断用户还在直播间中?
import json
import httpx
from selenium import webdriver
def task():
while True:
url = f'https://live.douyin.com/webcast/room/web/enter/?aid=6383&app_name=douyin_web&live_id=1&device_platform=web&language=zh-CN&enter_from=web_homepage_follow&cookie_enabled=true&screen_width=1536&screen_height=864&browser_language=zh-CN&browser_platform=Win32&browser_name=Chrome&browser_version=113.0.0.0&web_rid={room_id}&room_id_str={room_id_str}&enter_source=&Room-Enter-User-Login-Ab=0&is_need_double_stream=false&msToken={cookies["msToken"]}&X-Bogus=DFSzswVjl3bAN9I1tShAtF9WX7jL&_signature=_02B4Z6wo000019O0cCAAAIDDU7aKYBN2Z9fTtHSAAJChKkHII.3kd0MSSZKaI3k2Gs.Fa6u6iVAgCN7Gkb8QYKs7OIWqwyD2.P5AJn2W4IBNVZDvJi2kTyFN9BkGFCHRnbcS5Vcje6GfSCxDf5'
resp = httpx.get(url, headers=headers, cookies=cookies)
if resp.status_code == 200:
text = json.loads(resp.text)
res = text['data']['data'][0]
print(res['status'])
if res['status'] == 2:
break
else:
cookies['msToken'] = resp.cookies.get('msToken')
if __name__ == '__main__':
wd = webdriver.Chrome()
wd.maximize_window()
wd.get('https://live.douyin.com/')
input('登录抖音后回车以继续:')
# 直播间id
room_id = '575029505871'
room_id_str = '7238861463593732924'
cookies = {}
web_cookies = wd.get_cookies()
wd.quit()
for ck in web_cookies:
k, v = ck['name'], ck['value']
cookies[k] = v
cookies['passport_fe_beating_status'] = 'false'
headers = {
'Host': 'live.douyin.com',
'Connection': 'keep-alive',
'sec-ch-ua': '"Google Chrome";v="113", "Chromium";v="113", "Not-A.Brand";v="24"',
'sec-ch-ua-mobile': '?0',
'sec-ch-ua-platform': '"Windows"',
'x-secsdk-csrf-token': '0001000000010e8699d1b2601fe20fe18dde87421220f472327bba3a1b9327d6bbeb94b7a4c81763d8a507b62864',
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/113.0.0.0 Safari/537.36',
'Accept': 'application/json, text/plain, */*',
'Sec-Fetch-Site': 'same-origin',
'Sec-Fetch-Mode': 'cors',
'Sec-Fetch-Dest': 'empty',
'Referer': f'https://live.douyin.com/{room_id}',
'Accept-Encoding': 'gzip, deflate, br',
'Accept-Language': 'zh-CN,zh;q=0.9,en;q=0.8'
}
task()