創作內容

54 GP

巴哈自動搶樓程式

作者:熾炎之翼│2020-11-18 11:01:13│巴幣:108│人氣:1606
昨天晚上熬夜到3點終於勉強搞出一個堪用的自動推樓程式
連續幾天都這個時間睡害我一整個爆睡遲到= =
在這之前也試過很多方法
爬了一大堆文 嘗試不同的寫法
最後寫出來也是挺有成就感的

不過我的事情不重要
這次主角是這個自動蓋樓程式

先講講功能方面
簡單來說就是暴力搶樓(稍微改造一下能變成自動推樓程式XD)
以人類的速度基本上不可能比他快(除非是那個男人)
但是這不代表利用這程式每次都能穩穩的搶到
主要會有兩種不確定因素會搞:
1.網速問題
2.多人同時蓋樓
第一個問題就網路環境問題 不多做討論
第二個就比較棘手了 因為基本上無法解決
比方說如果在xx98樓的時候
有兩個人幾乎同時按了發送
程式刷新的時間是0.4秒
發文的時機是樓層偵測尾數是99的時候
所以可想而知自然就搶不到了
不過這不止電腦 任何人都搶不到就是了XD

接下來講技術層面
這次是用Python實作的
主要有兩大核心部份
1.網路爬蟲(用來抓取樓層資料)
2.Selenium套件(用來使程式可以控制瀏覽器)

前者在很初期就做出來了
畢竟之前高中的時候就曾經特別研究過Python爬蟲
自己也實作了巴哈自動抓圖程式以及Google圖片自動抓圖程式還有N什麼網站的自動下載本本程式
這次只是稍微拿以前的程式修改一下再加上幾個判斷式就完成了
畢竟以前載圖片的功能還更複雜呢
這次只是要去爬樓層而已

細節部份是當一開始先爬到最新的樓層
然後如果樓層不是9X樓時則每一分鐘獲取最高樓層
此舉可以降低電腦還有巴哈伺服器的負擔
一般來說也不太可能在一分鐘內蓋超過10樓以上
但要是樓層為9X 則開始每0.4秒獲取一次最高樓層
這個數字是低空飛過會被巴哈認為是惡意攻擊的底線
如果時間間隔再短一點 很可能會被巴哈拒絕連線
這個程式也瞬間沒有意義
基本上主要功能是這樣

其實利用這個就能輔助使用者搶樓了
準確率就...目前只搶輸過一次XDDD
原因還是上述第二個同時搶樓的情況

但是接下來很長一段時間都被卡在這裡

接下來如何自動發文困擾了我很久很久
前前後後試了好幾種方法
因為巴哈網頁說實在特別棘手
最麻煩的還是無法做到自動登入
因為會有人機辨識 圖形驗證碼程式基本上沒可能通過
然後用cookie登入看來也不是一個好的選擇
巴哈似乎隔一段時間會改一次cookie
此方法沒有永續性 每次匯出cookie也是很麻煩

後來我選擇了用Selenium套件
一開始其實也用過 但是被這個套件操作的瀏覽器是獨立的
也就是會特別標明用程式控制
所以使用者資訊都不會存取
當然也無法達到發文的目的

可是後來持續爬文也發現了利用Selenium控制已開啟瀏覽器的方式
這部份我有點投機取巧...
我直接就把這段程式碼扒下來貼上去
因為這語法我還真的沒看過
但是後來出了點問題 我也是繼續爬文才得以解決

簡單來說就是在程式資料夾下面再額外創一個新的chrome
瀏覽器資訊都會被儲存在裡面
這樣就做到了可以被程式控制和使用者雙向控制的特製化chrome
而且重點是會儲存網站登入資訊
登入問題就因此解決了

然後接下來的難題就是用Selenium模擬滑鼠以及鍵盤控制
這部份我又花了很多時間在爬文
因為真的也是很不順利 老實說目前也不完美
我的想法是利用巴哈上網址語法的#down
(就是你每次看通知「XXX有新的回覆」這個背後的超連結,你每次點都會連到最新的一樓,也就是最底部)
然後直接用滑鼠座標去點擊回覆框(畢竟那個範圍夠大,容錯率很大)
接著再利用元素定位去鎖定「送出」按鍵的class
這個按鍵有三個class 但是只有一個是這按鍵專屬的
(其他兩個與回覆(其他人)的按鍵重疊)
也就是「btn--send
到目前為止還算順利

但是巴哈系統會再問你一次是否發送
這裡就雞巴麻煩了
因為那個框框沒有包含在原本的網頁碼裡
用元素定位無法找到「確認」的class
也就是「btn-primary
這邊就只能用滑鼠座標定位法
一開始怎麼定都定不了
後來再去爬文才知道原來座標定位法第二次是看「相對位置
也就是要去扣掉「送出」的座標才是正確的座標
但是這個按鍵狗幹小
每次定位成功率大概只有一半不到
而且這套流程下來也不太穩定
常常座標亂跳 還出現了幾次沒有輸入到回覆框的情況
這方法看來也不太可靠

所以昨天雖然第一次成功自動推文成功
但我又花了半小時左右在處理這個問題
不過依舊沒什麼進展

後來我選擇了比較折衷的做法
就是先手動填裝
也就是先打好內容按發送 等待在確認放送的頁面
這沒花多少時間 可以提前先放著很久
然後程式這次就會偵測到「btn-primary
這次完全不用不可靠的座標定位法
只是簡單的定位然後再送出
這樣提供了更高的準度 也省下了更多的運行時間
但是無可避免的 這樣讓自動化程度下降
這部份之後會繼續改進

目前新的想法是結合前兩種方式
不過第一種的穩定性還是最大的隱憂
之後還要繼續改進

主要就是這樣
然後恕我不公開程式碼 原因是:

1.
這個程式使用了很多套件
一般人沒下載套件更或者沒下載Python就無法運行
也就是相容性很低

2.
被有心人士修改後使用可能會對巴哈造成不必要的麻煩

3.
幹你娘 我就是要來搶樓的
我為什麼要製造一大堆對手 = =
是要來集體比網速逆?


這次程式總觀下來
雖然我想的大部分功能都實現了
但是我個人也還是不到很滿意
這次其實最大的障礙還是我個人實力不足
就「越級打怪」挑戰這種比較有挑戰性的程式
而主程式也算是一個「縫合怪」的存在
很多都是我從網路上找各個大神的程式碼去理解後
去模仿甚至複製的語法
我知道各個語法的功用
但是細節運作上卻一大半不清楚
基本上只是運用我對Python還有HTML的理解去編譯
這部份我感到慚愧 沒有好好腳踏實地的去從頭學
之後會多多接觸這領域
希望遲早有一天把這些都真正變成我自己的

這邊也特別感謝可樂噴還有他的同學
他們這些程式佬也幫我嘗試了很多方法
也提供了很多的意見 我受益良多
真的十分感謝

最後我想說
這程式果然還是不算完美
但是我還是藉這次機會學到了很多
過程也是很快樂
尤其是成功的那個瞬間的成就感真的很爽
未來還好再多多往資工領域研究的
希望以後能寫出更多實用且有趣的程式



非常感謝願意看完這篇冗長文章的各位
這次文章就到這邊結束了
謝謝大家

我婆愛美給你個讚><







引用網址:https://home.gamer.com.tw/TrackBack.php?sn=4985192
All rights reserved. 版權所有,保留一切權利

相關創作

留言共 30 篇留言

美好的過去漸行漸遠
上學期專題老師要教爬蟲,結果我去比校內資訊賽就沒學到了QQ

11-18 12:28

熾炎之翼
個人覺得爬蟲很有用 在大數據這塊超級好用11-18 12:46
超稀有S級食材魩仔魚
ㄙ本ㄗ

11-18 12:29

熾炎之翼
不ㄙ11-18 12:46
kasumi_ MyGo單推人
我要跟程式對抗啦啦啦

11-18 12:29

熾炎之翼
可以 畢竟我電腦不會24小時都開著XD11-18 12:46
為美好的暴死獻上麻糬
下一步就是寫出那款遊戲了吧

11-18 12:34

熾炎之翼
我不是茅場晶彥...11-18 12:47
咪胖の植物園
跟不上...

11-18 12:34

熾炎之翼
我快爆肝了 當我主治醫生...11-18 12:47
希無冀
大佬...
還有 私本子

11-18 12:39

熾炎之翼
不ㄙ 小色鬼==11-18 12:47
無鹽粄條
爬蟲大師…

11-18 12:39

熾炎之翼
???11-18 12:48
玉子燒-瘋狂發春模式
資工系表示聽不懂...

11-18 12:40

熾炎之翼
沒事 你一定也會我不懂的語法11-18 12:48
為什麼會變成這樣
花一個禮拜寫出來的瞬間也是爽到歪頭 然後被老師打槍…

11-18 12:47

熾炎之翼
我之前也是寫程式被老師打槍過
有一篇日誌「我說,下一位」就是在講這件事
我覺得自己開心就好 不要管別人怎麼批評11-18 12:52
515YY
資工大神…

11-18 13:08

熾炎之翼
ㄞ 我不是資工系...11-18 13:28
煙雨迷濛
太令人晶彥了

11-18 13:10

熾炎之翼
11-18 13:28
jenny
霸......

11-18 13:11

熾炎之翼
搞錯了11-18 13:28
XxIuU
太霸了吧,瓜張

11-18 13:16

熾炎之翼
沒有吧...11-18 13:28
為什麼會變成這樣
想法很棒 那堂不是程式課 被打槍是我寫的真的很爛 只是從零自學寫出來的瞬間真的超爽

11-18 13:16

熾炎之翼
真的ㄋ11-18 13:28
舒潔艾拉
別亂P我圖我會更開心

11-18 13:26

熾炎之翼
我今天沒力了 以後再說==11-18 13:28
聖夜騎士-山羊鮭魚排
佬欸

11-18 13:32

熾炎之翼
沒有...11-18 14:14
玥晴 Luna (#ΦωΦ#)
啊嘶……

11-18 13:47

熾炎之翼
射ㄌ11-18 14:14
樂小呈
要成神了

11-18 13:53

熾炎之翼
成神之日(x11-18 14:15
失戀症候群 2434一生推
卡等賢機器人

11-18 13:55

熾炎之翼
賴機器人已經實裝了 等AI版11-18 14:15
你麻痺的打的是友軍!
趕緊發射GP免得別人以為我不懂

11-18 16:02

熾炎之翼
豪色ㄛ11-18 16:58
鏡野七罪
佬 還有私本子

11-18 16:58

熾炎之翼
Nope11-18 16:59

「我不是機器人」請回覆

11-18 16:58

熾炎之翼
我不是機器人11-18 16:59
パっパっパスタ
資工霸

11-18 17:08

熾炎之翼
我不是資工系ㄉ11-18 17:09
星爆凱留-東方傳教士

11-18 17:59

熾炎之翼
沒有11-18 21:00
(๑˘• ¸•)˘{鳴aiRN7⁆
原來 熾炎 會這方面的類型呀!?? 感覺滿厲害的。

11-18 19:56

熾炎之翼
興趣是資訊方面 讀的也是資管11-18 21:01

化成那個男人

11-18 22:11

熾炎之翼
???11-20 21:53
沒想到月如成了月餅
好猛喔

11-19 11:03

熾炎之翼
普通啦11-20 21:54
美國紐澤希州
佬 我也要本本

11-23 18:31

熾炎之翼
好色喔09-02 13:53
慕尼黑烤香腸
交大唯一可以跟阿御抗衡的男人…

09-02 13:50

熾炎之翼
?_?09-02 13:54
熾炎之翼
不過後來我有改良機器人 然後重發一篇文這樣
https://home.gamer.com.tw/creationDetail.php?sn=522012509-02 13:54
小小
[e43]

11-16 07:24

我要留言提醒:您尚未登入,請先登入再留言

54喜歡★H32902227 可決定是否刪除您的留言,請勿發表違反站規文字。

前一篇:2020/11/17 好... 後一篇:2020/11/18 生...

追蹤私訊切換新版閱覽

作品資料夾

ShuLongQinHu大家
小屋有新增肌肉練習喔 歡迎來看看看更多我要大聲說3小時前


face基於日前微軟官方表示 Internet Explorer 不再支援新的網路標準,可能無法使用新的應用程式來呈現網站內容,在瀏覽器支援度及網站安全性的雙重考量下,為了讓巴友們有更好的使用體驗,巴哈姆特即將於 2019年9月2日 停止支援 Internet Explorer 瀏覽器的頁面呈現和功能。
屆時建議您使用下述瀏覽器來瀏覽巴哈姆特:
。Google Chrome(推薦)
。Mozilla Firefox
。Microsoft Edge(Windows10以上的作業系統版本才可使用)

face我們了解您不想看到廣告的心情⋯ 若您願意支持巴哈姆特永續經營,請將 gamer.com.tw 加入廣告阻擋工具的白名單中,謝謝 !【教學】