owned this note
owned this note
Published
Linked with GitHub
---
title: Popcat 台灣 Bot 製作團隊
tags: Popcat, Taiwan, Bot
description: Popcat 台灣 Bot 製作團隊
lang: zh_tw
---
[TOC]
# Popcat 台灣 Bot 製作團隊
已公開程式碼:https://github.com/popclick/popclick
網址:https://popcat.click
歷史狀態:https://grafana.tipsy.coffee/d/ZpkMi6Gnz/popcat-click
![](https://i.imgur.com/AlVDRhB.png)
#### 8/14 UPD
進行大規模 code 改動,增加更多 Telemetry Export
![](https://i.imgur.com/ZNMcVDS.png)
讓 100 億目標更快達成
**團隊目前PPS臺灣佔比約97%**
#### 8/16 UPD
~~都是我們的三角波~~
![](https://i.imgur.com/Nj6DlIN.jpg)
#### 8/18 UPD
~~已經穩定的都是 ptc0219 的形狀了~~
![](https://i.imgur.com/AEjj3vX.jpg)
## 網頁運作原理
- 30 秒彙整一次你點的次數傳給伺服器
- 每30秒最多 800 次
- 30 秒內如果使用相同 IP 多次傳送點擊次數給伺服器,將會觸發 Rate Limiter
- 會收到 HTTP 429 回應
- **同一台電腦相同 IP 開再多瀏覽器都沒用**
- 可利用 ipinfo.io 確認對外 IP,只要是顯示相同的兩台電腦都會被判定為同一台
- 紅眼貓貓代表被判定為 bot,前端點擊結果將不會被後端承認,這個是後端判定的,網路上流傳的「防紅眼」全都是假的,那只是把前端的紅眼 flag 清除而已
- 官方程式碼註解寫得很清楚
- ![](https://i.imgur.com/SahW7Ue.png)
## 自動點擊腳本
1. 按下F12
2. 切到 Console
3. 將下方程式碼貼入後按下 Enter
前端版本(可以在網頁上看到自己點了多少)
```javascript
setInterval(()=>{document.dispatchEvent(new Event("keydown"))},38)
```
From ![](https://i.imgur.com/5qPBNY1.png)
後端版本(較穩定、紅眼什麼的不重要,後端有201都是好請求)
```javascript
setInterval(()=>{fetch('https://stats.popcat.click/pop?pop_count=800&captcha_token=TWNO1');},30000);
```
From ![](https://i.imgur.com/9AWhnoA.png)
## CF Bypass
![](https://i.imgur.com/V2xNVW2.png)
效果可以達到 40K PPS 以上
PPS Graph by SDTDDH from [https://forum.gamer.com.tw/C.php?bsn=60076&snA=6509210&to=197](https://forum.gamer.com.tw/C.php?bsn=60076&snA=6509210&to=197) 的留言
![](https://i.imgur.com/mydpdjw.png)
![](https://i.imgur.com/IQwpskV.png)
## 電信小夥伴們的貢獻列表
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
![](https://i.imgur.com/o1cf5AE.png)
8/11 Graph by SDTDDH
![](https://i.imgur.com/qnzfDSB.png)
> 覺得是手點/連點器點的有沒有好好算過這個 PPS 要多少 IP 才能達成?
> [name=seadog007]
關 Bot 後的 PPS,比馬來還低,約 1.2KPPS
![](https://i.imgur.com/2sDRjpL.png)
## Analysis
![](https://i.imgur.com/lWu3yib.png)
**要嘛是後端沒寫好,要嘛是有控速,從 Client 來算後端有 Vaild 的 Click(201) 絕對超過 Leaderboard 的 Click**
> UPD: 看起來比較像卡C10K
> [name=seadog007]
Project author response
![](https://i.imgur.com/TGmEnzW.png)
From Twitter Log by Hans Chiu
![](https://i.imgur.com/PrmjsRz.png)
![](https://i.imgur.com/SqvW3i1.png)
![](https://i.imgur.com/05Bv6uK.png)
# 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` 這個國家?????? ![](https://i.imgur.com/wNpl0zu.jpg)
- 由於流程上他多了很多前置步驟,所以打起來速度並沒有很理想,剛開始寫的 memory leak 版本大概跑五分鐘就會炸掉,但是成績很顯著的成長,後面修改好的版本就成長很緩慢,所以持續優化中 ![](https://i.imgur.com/44j6YI3.png)
# 團隊成員寫的暴力 Bot Source Code (private invite only)
已公開程式碼:https://github.com/popclick/popclick
- https://github.com/james58899/popcat_clicker
- https://github.com/Haraguroicha/popcat-dashboard (cat, dog, ass, pig 全都通用的共用版本)
- https://github.com/ptc0219/coscat
- https://github.com/ptc0219/popdog