Popcat 台灣 Bot 製作團隊

已公開程式碼:https://github.com/popclick/popclick

網址:https://popcat.click
歷史狀態:https://grafana.tipsy.coffee/d/ZpkMi6Gnz/popcat-click

8/14 UPD

進行大規模 code 改動,增加更多 Telemetry Export

讓 100 億目標更快達成
團隊目前PPS臺灣佔比約97%

8/16 UPD

都是我們的三角波

8/18 UPD

已經穩定的都是 ptc0219 的形狀了

網頁運作原理

  • 30 秒彙整一次你點的次數傳給伺服器
    • 每30秒最多 800 次
  • 30 秒內如果使用相同 IP 多次傳送點擊次數給伺服器,將會觸發 Rate Limiter
    • 會收到 HTTP 429 回應
    • 同一台電腦相同 IP 開再多瀏覽器都沒用
      • 可利用 ipinfo.io 確認對外 IP,只要是顯示相同的兩台電腦都會被判定為同一台
  • 紅眼貓貓代表被判定為 bot,前端點擊結果將不會被後端承認,這個是後端判定的,網路上流傳的「防紅眼」全都是假的,那只是把前端的紅眼 flag 清除而已
  • 官方程式碼註解寫得很清楚

自動點擊腳本

  1. 按下F12
  2. 切到 Console
  3. 將下方程式碼貼入後按下 Enter

前端版本(可以在網頁上看到自己點了多少)

setInterval(()=>{document.dispatchEvent(new Event("keydown"))},38)

From

後端版本(較穩定、紅眼什麼的不重要,後端有201都是好請求)

setInterval(()=>{fetch('https://stats.popcat.click/pop?pop_count=800&captcha_token=TWNO1');},30000);

From

CF Bypass


效果可以達到 40K PPS 以上

PPS Graph by SDTDDH from https://forum.gamer.com.tw/C.php?bsn=60076&snA=6509210&to=197 的留言


電信小夥伴們的貢獻列表

Original Version with lots of browsers by seadog007 with Shell Script
Performance Improve / CF Bypass by James58899 with Javascript

User CPU Cores IPs PPS on Peak Est Click (before 8/18) Join Time +8
seadog007 80 20000 80K 30,000,000,000 8/11 07:00
james58899 8 10000 60K 10,000,000,000 8/11 22:00
Haraguroicha 40 12300 60K 10,000,000,000 8/12 01:30
ptc0219 40 17800 60K 40,000,000,000 8/12 02:00
da21510 24 12300 60K 10,000,000,000 8/12 03:00
licson 80 20000 245K n/a 8/19 03:30

Due to the server performance issue, the submits are only partial vaild.
Total Cap: 1400K PPS

Peak Performance 335.1K PPS
Server Avg Process Speed: 50K PPS

8/10~11 Graph by SDTDDH

8/11 Graph by SDTDDH

覺得是手點/連點器點的有沒有好好算過這個 PPS 要多少 IP 才能達成?
seadog007

關 Bot 後的 PPS,比馬來還低,約 1.2KPPS

Analysis

要嘛是後端沒寫好,要嘛是有控速,從 Client 來算後端有 Vaild 的 Click(201) 絕對超過 Leaderboard 的 Click

UPD: 看起來比較像卡C10K
seadog007

Project author response

From Twitter Log by Hans Chiu


Popdog

網址:https://popdog.click

網頁運作原理

  • 進入網頁後會先去 api 抓 uuid 回來,那是代表你的帳號,如果沒有存下他給的網址或 QR Code ,那你換裝置不能斷點續點
  • 要你輸入名字,那是 leaderboard 有 by user 的統計功能顯示使用
  • 每 30s 極限值 2000,不管超過多少也都只算你 2000
  • 同一組 uuid 不同 IP 進去不會比較快,他 by uuid 在看的
  • 不定時的會有 x10 狗糧出現,點了狗糧啟動 x10 click 功能
  • 至少 > 5s delay 的 request 才會被計算,否則他會丟棄計算
  • rate limiter
    • 10s 內 > 3 requests 疑似會被 nginx 的 rate limiter 給丟去晾著
    • header response 有寫 limit 100 remain 99 reset after 3m 但完全沒辦法拿來參考用,因為他還是會先卡 nginx rate limiter
    • 戳太快到一定程度會整個 CIDR 被 ban 掉,導致 TCP 不會通
    • 不存在 cloudflare bypass 問題,因為他直接 Linode 灑出來放

Popass

網址:https://popass.click
歷史圖表:https://grafana.tipsy.coffee/d/xMYU6cn7z/popass-click

網頁運作原理

  • 他的前端其實就是 popcat 的砍站修改版本
  • popcat 的 pop limit 是 800 但他改了 1000
  • 後端 api 是用 PHP 寫到爛掉的,丟 request 進去他回傳 204 但是他卻還在用 popcat 的抓 Location 的結構處理
  • 存在 bypass cloudflare 問題,但是他 429 的觸發比 popcat 更謎,延時拉到了比 popcat 更長五倍的等待一樣 429 會撞到

Poppig

網址:https://poppig.click
歷史圖表:https://grafana.tipsy.coffee/d/w4rLph77k/poppig-click

網頁運作原理

  • 和 Popdog 很類似,他先取得 UUID 當帳號,但他沒有 by user leaderboard 所以不用取名字,然後也沒有所謂的個人斷點續點功能
  • 用 UUID 去抓 token 然後後面全部都用 token 去發請求
  • pop limit 是 10s + 800 pop max,請求太快他會回應 resp.json().status = 102 (429 的意思),如果拿到 token 之後小於 10s 內請求 pop 則會是 resp.json().status = 101 (503 的意思),其餘請求原則上只要他沒辦法回應就是 resp.json().status = 100 (大概是 500 的意思)
  • leaderboard 結構很接近 popcat 但是他後端先幫你算好了 pps 和 lastupdated 資料,所以他的 pps 比較準確一點,比較不會爆衝,但是我們用不到他的 pps 因為他算的不是很精準
  • 他一樣有用 Cloudflare 所以一樣要 bypass
  • IP 判斷上很蠢,打一打就跑出了 local 這個國家??????
  • 由於流程上他多了很多前置步驟,所以打起來速度並沒有很理想,剛開始寫的 memory leak 版本大概跑五分鐘就會炸掉,但是成績很顯著的成長,後面修改好的版本就成長很緩慢,所以持續優化中

團隊成員寫的暴力 Bot Source Code (private invite only)

已公開程式碼:https://github.com/popclick/popclick

Select a repo