JS實現b站動態轉發抽獎(小人數)新方案講解

前情

B站動態轉發抽獎腳本+教程 之後。
因b站數據包地址生成做了改動,猜測通過某種方式進行了加密後減去某一數值的方式。
在這裏插入圖片描述
原抽獎腳本難以獲取全部轉發者信息。
ps:即使是手動翻頁記錄,也無法獲取所有轉發者信息。即:前面的信息已不被動態頁面記錄。
再次提供另一種方案,可以極大程度的提高抽獎的準確性和真實性(小人數)。

教程

1、訪問頁面

PC端打開瀏覽器,訪問你的動態抽獎頁面
在這裏插入圖片描述

2、打開“檢查”

鼠標右鍵,打開“檢查”,一般的快捷鍵都是F12
在這裏插入圖片描述
長這樣,我們需要在console(控制檯)下輸入代碼。
在這裏插入圖片描述

3、手動加載所有可加載數據

點擊“轉發”圖標,並一直滾動到沒有新數據刷新爲止!
在這裏插入圖片描述
在這裏插入圖片描述

4、執行代碼

獲取可加載轉發者的人數

在“檢查”的控制檯下輸入以下命令,獲取所有可加載轉發者的人數

document.getElementsByClassName("user-name c-pointer").length

在這裏插入圖片描述
可以看到,2k多的轉發,但是實際加載到570的時候就不能加載新數據了。

將轉發者信息存入集合(集合自帶去重)

在“檢查”的控制檯下輸入以下命令,定義一個集合,叫my_set。記得按回車啊!!!

let my_set = new Set();

在這裏插入圖片描述
循環將數據存入集合

for(var i=0; i<document.getElementsByClassName("user-name c-pointer").length; i++)
{
	my_set.add(document.getElementsByClassName("user-name c-pointer")[i].innerText);
}

在這裏插入圖片描述
可以看到得到的Set在下面已經打印了,我們點擊Set左側的小三角,展開。
可以看到,我們一共獲取到 249條數據,已經去重後的轉發者的暱稱。可以繼續展開查看。
在這裏插入圖片描述
可以看到已經成功去重了。
在這裏插入圖片描述

5、抽取幸運兒

直接生成隨機數並打印幸運兒

在“檢查”的控制檯輸入以下代碼,my_set.size就是 Set的長度。可以改成數字,例如:249。
這個代碼會生成 0到my_set.size-1 的整數。將這個整數做爲Set轉Array後的下標,打印結果。

Array.from(my_set)[parseInt(Math.random()*(my_set.size),10)]

在這裏插入圖片描述

其他程序生成隨機數進行抽取

將Set的長度記錄下來,即 249名用戶。
在這裏插入圖片描述
抽獎方式很簡單,隨便百度個隨機數生成程序。例子:http://www.99cankao.com/numbers/random-number-generator.php
在這裏插入圖片描述
注意是從 0開始,到Set長度減1。
生成結果 203 後,我們繼續在“檢查”下的控制檯下執行代碼,轉Set爲Array,打印其值。

Array.from(my_set)[203]

在這裏插入圖片描述
或是直接翻開來找。
在這裏插入圖片描述

6、補充

翻頁其實也可以通過代碼實現,不過比較複雜(其實我也不會),所以沒有寫上去。
自動翻頁到無法加載後,執行抽獎一氣呵成。這就是理想效果了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章