最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網 會員登陸 & 注冊

JS實現(xiàn)b站動態(tài)轉發(fā)抽獎(小人數(shù))新方案講解

2020-05-07 16:49 作者:Love丶伊卡洛斯  | 我要投稿

前情

即 [B站動態(tài)轉發(fā)抽獎腳本+教程](https://blog.csdn.net/Ikaros_521/article/details/102815938) 之后。
因b站數(shù)據包地址生成做了改動,猜測通過某種方式進行了加密后減去某一數(shù)值的方式。


原抽獎腳本難以獲取全部轉發(fā)者信息。
ps:即使是手動翻頁記錄,也無法獲取所有轉發(fā)者信息。即:前面的信息已不被動態(tài)頁面記錄。
再次提供另一種方案,可以極大程度的提高抽獎的準確性和真實性(小人數(shù))。

教程

1、訪問頁面

PC端打開瀏覽器,訪問你的動態(tài)抽獎頁面。



2、打開“檢查”

鼠標**右鍵**,打開“檢查”,一般的快捷鍵都是F12


長這樣,我們需要在console(控制臺)下輸入代碼。


3、手動加載所有可加載數(shù)據

點擊“轉發(fā)”圖標,并一直滾動到沒有新數(shù)據刷新為止!


4、執(zhí)行代碼

獲取可加載轉發(fā)者的人數(shù)

在“檢查”的控制臺下輸入以下命令,獲取所有可加載轉發(fā)者的人數(shù)。

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

可以看到,2k多的轉發(fā),但是實際加載到570的時候就不能加載新數(shù)據了。

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

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

let my_set = new Set();

循環(huán)將數(shù)據存入集合

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條數(shù)據,已經去重后的轉發(fā)者的昵稱??梢岳^續(xù)展開查看。

可以看到已經成功去重了。


5、抽取幸運兒

直接生成隨機數(shù)并打印幸運兒

在“檢查”的控制臺輸入以下代碼,my_set.size就是 Set的長度??梢愿某蓴?shù)字,例如:249。
這個代碼會生成 0到my_set.size-1 的整數(shù)。將這個整數(shù)做為Set轉Array后的下標,打印結果。

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


其他程序生成隨機數(shù)進行抽取

將Set的長度記錄下來,即 249名用戶。


抽獎方式很簡單,隨便百度個隨機數(shù)生成程序。例子:http://www.99cankao.com/numbers/random-number-generator.php

注意是從 0開始,到Set長度減1。
生成結果 203 后,我們繼續(xù)在“檢查”下的控制臺下執(zhí)行代碼,轉Set為Array,打印其值。

Array.from(my_set)[203]

或是直接翻開來找。

6、一步到位 單人中獎

console.log("程序開始運行");

console.log("定義集合存儲數(shù)據");

let my_set = new Set();

var offset = document.getElementsByClassName("text-bar selected")[0].getElementsByClassName("text-offset")[0].innerText;

if(offset/20 > 25)

{

offset = 500;

}

console.log("開始載入數(shù)據");

var my_loop;

function r()

{

window.scroll(0, 1920*100);

}

function stop_r()

{

clearInterval(my_loop);

}

function draw()

{

for(var i=0; i<document.getElementsByClassName("user-name c-pointer").length; i++)

{

my_set.add(document.getElementsByClassName("user-name c-pointer")[i].innerText);

}

console.log("全部數(shù)據加載完畢");

console.log("總共"+my_set.size+"名用戶");

console.log("中獎用戶為:"+Array.from(my_set)[parseInt(Math.random()*(my_set.size),10)]);

}

my_loop = setInterval(r, 3000);

setTimeout(stop_r, 3000 * (parseInt(offset)/10 + 5));

setTimeout(draw, 3000 * (parseInt(offset)/10 + 6));


7、一步到位 多人中獎


console.log("程序開始運行");

console.log("定義集合存儲數(shù)據");

let my_set = new Set();

var offset = document.getElementsByClassName("text-bar selected")[0].getElementsByClassName("text-offset")[0].innerText;

if(offset/20 > 25)

{

offset = 500;

}

console.log("開始載入數(shù)據");

var my_loop;

function r()

{

window.scroll(0, 1920*100);

}

function stop_r()

{

clearInterval(my_loop);

}

function draw()

{

// 修改num為你需要抽獎的人數(shù)

var num = 3;

for(var i=0; i<document.getElementsByClassName("user-name c-pointer").length; i++)

{

my_set.add(document.getElementsByClassName("user-name c-pointer")[i].innerText);

}

let num_set = new Set();

while(1)

{

if(num_set.size >= num)

break;

var lucky_num = parseInt(Math.random()*(my_set.size),10);

num_set.add(lucky_num);

}

for(var i=0; i<num; i++)

{

console.log("中獎用戶為:"+Array.from(my_set)[i]);

}

}

my_loop = setInterval(r, 3000);

setTimeout(stop_r, 3000 * (parseInt(offset)/10 + 5));

setTimeout(draw, 3000 * (parseInt(offset)/10 + 6));



8、多人數(shù)二步到位腳本

自動翻頁到底部時,再輸入 draw(中獎數(shù)) 回車即可


console.log("程序開始運行");

console.log("定義集合存儲數(shù)據");

let my_set = new Set();


console.log("開始載入數(shù)據");

var my_loop;

function r()

{

window.scroll(0, 1920*100);

}


function draw(num)

{

clearInterval(my_loop);

for(var i=0; i<document.getElementsByClassName("user-name c-pointer").length; i++)

{

my_set.add(document.getElementsByClassName("user-name c-pointer")[i].innerText);

}

console.log("全部數(shù)據加載完畢");

console.log("總共"+my_set.size+"名用戶");

let num_set = new Set();

while(1)

{

if(num_set.size >= num)

break;

var lucky_num = parseInt(Math.random()*(my_set.size),10);

num_set.add(lucky_num);

}

for(var i=0; i<num; i++)

{

console.log("中獎用戶為:"+Array.from(my_set)[i]);

}

}

my_loop = setInterval(r, 3000);

// 當頁面到底時, 輸入 draw(你要抽的人的數(shù)量) 即可


JS實現(xiàn)b站動態(tài)轉發(fā)抽獎(小人數(shù))新方案講解的評論 (共 條)

分享到微博請遵守國家法律
碌曲县| 休宁县| 兴隆县| 固原市| 涿州市| 五指山市| 宿松县| 舒城县| 长葛市| 浦城县| 罗源县| 大悟县| 泰兴市| 万全县| 平邑县| 阿鲁科尔沁旗| 汉中市| 长沙县| 梨树县| 济源市| 苏尼特右旗| 横山县| 隆回县| 凌海市| 藁城市| 西林县| 德惠市| 丰都县| 锡林郭勒盟| 四子王旗| 思茅市| 汪清县| 遂宁市| 霍州市| 孝昌县| 茶陵县| 西畴县| 保定市| 澜沧| 胶州市| 陆川县|