<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
應好友邀請,幫他寫了個小程式,功能類似於實時監控自己關注的UP主,如果關注的UP主中有人釋出了抽獎的動態,就自動參與這個抽獎。這樣就能不錯過任何一個可以暴富的機會了。寫完之後感覺這個想法還是挺有意思的,於是上來分享一波。
廢話不多說,讓我們愉快地開始吧~
Python版本:3.7.8
相關模組:
DecryptLogin模組;
以及一些python自帶的模組。
安裝Python並新增到環境變數,pip安裝需要的相關模組即可。
我們主要用到的工具是公眾號前幾天剛釋出的DecryptLogin包
首先,我們需要用它來模擬登入B站,具體而言,需要先pip安裝一下:
pip install DecryptLogin
然後利用Client類來實現模擬登入,該類可以儲存當前的登入對談,在該對談沒過期之前再次執行程式是不需要重複傳送登入請求的,可以避免因為頻繁登入賬號而觸發網站的風控機制:
from DecryptLogin import login client = login.Client() bili = client.bilibili(reload_history=True) infos_return, session = bili.login(self.username, '微信公眾號: Charles的皮卡丘', 'scanqr')
接著,我們來抓包看看抓取自己的關注列表要請求哪個API吧,具體而言,如下圖所示:
程式碼簡單實現如下:
'''獲得關注列表''' def getfollowings(self, session, infos_return): url = 'https://api.bilibili.com/x/relation/followings' params = { 'vmid': infos_return['data']['mid'], 'pn': '1', 'ps': '20', 'order': 'desc', 'order_type': 'attention', 'jsonp': 'jsonp', } response = session.get(url, params=params, headers=self.headers) total = response.json()['data']['total'] followings_ids, page = [], 1 while True: for item in response.json()['data']['list']: followings_ids.append(item['mid']) if len(followings_ids) >= total: break page += 1 params['pn'] = str(page) response = session.get(url, params=params, headers=self.headers) return followings_ids
類似地,我們可以獲得我們關注的UP主的當前所有動態的介面如下:
'''獲得UP主的動態''' def getupdates(self, infos_return, host_uid, session): url = f'https://api.vc.bilibili.com/dynamic_svr/v1/dynamic_svr/space_history?visitor_uid={infos_return["data"]["mid"]}&host_uid={host_uid}&offset_dynamic_id=0&need_top=1&platform=web' response = session.get(url, headers=self.headers) response_json, updates = response.json(), {} for card in response_json['data']['cards']: dynamic_id = card['desc']['dynamic_id'] desp = re.findall(r'"description":"(.*?)"', card['card'])[0] updates[dynamic_id] = desp return updates
轉發動態的介面如下:
'''轉發動態''' def forwardupdate(self, session, infos_return, dynamic_id): url = 'http://api.vc.bilibili.com/dynamic_repost/v1/dynamic_repost/repost' data = { 'uid': infos_return['data']['mid'], 'dynamic_id': dynamic_id, 'content' : random.choice(self.comments), 'ctrl': '[{"data":"5581898","location":2,"length":4,"type":1},{"data":"10462362","location":7,"length":5,"type":1},{"data":"1577804","location":13,"length":4,"type":1}]', 'csrf_token': session.cookies.get('bili_jct') } response = session.post(url, data=data, headers=self.headers) return response.json()
接下來要做的就是如何判斷這個動態是不是抽獎動態了,這裡我們設定利用關鍵詞作為判斷依據:
# 監控新的動態 self.logging('開始監控是否有新的抽獎資訊釋出') while True: time.sleep(self.time_interval) self.logging('開始檢測是否有新的抽獎資訊釋出') for userid in tqdm(followings_ids): updates_old = followings_infos.pop(userid) updates_latest = self.getupdates(infos_return, userid, session) for dynamic_id in updates_latest.keys(): if dynamic_id not in updates_old: desp = updates_latest[dynamic_id] if '#互動抽取#' in desp: result = self.forwardupdate(session, infos_return, dynamic_id) self.logging('檢測到有新的抽獎資訊釋出, 已經嘗試轉發, 返回的結果為{result}') followings_infos[userid] = updates_latest
即當動態中有#互動抽取#這四個字的時候,我們就認定這是一條抽獎用的動態,並對其進行轉發。至此,我們的小程式就完成啦,它可以實時監控我們關注的UP主是否有釋出新的抽獎資訊,如果有,則第一時間參與這個抽獎。我們需要做的就是多關注一些經常釋出抽獎資訊的UP主就行了,接下來能不能暴富就看運氣了。
最終程式碼的使用方式如下:
usage: bilibililottery.py [-h] [--username USERNAME] [--time_interval TIME_INTERVAL] B站監控關注的UP主並自動轉發抽獎 optional arguments: -h, --help show this help message and exit --username USERNAME 用於儲存歷史cookies的唯一標識ID --time_interval TIME_INTERVAL 查詢UP主的動態的間隔時間
到此這篇關於基於Python編寫一個B站全自動抽獎的小程式的文章就介紹到這了,更多相關Python自動抽獎內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45