# iPickup Pro 使用說明
<a id="orgf6dc9a7"></a>
## 如何開始使用 iPickup Pro?
1. 根據你的作業系統和 CPU 架構,下載合適的 iPickup Pro 壓縮檔案 <https://github.com/ipickup-pro/releases/releases/latest>
2. 首次執行,打開 command prompt / terminal,並移動路徑至解壓後 folder 位置,然後輸入以下指令以開啟設定介面,瀏覽器會打開網址 <http://localhost:9999>
ipickup_pro-win-x64.exe --config
3. 設定完成後,於 command prompt / terminal 輸入 bot 執行檔即可開始自動搶購的操作
ipickup_pro-win-x64.exe
4. 程式啟動後,可於瀏覽器打開 dashboard,網址為 <http://localhost:5555> (位址中的 port 可於設定介面中修改)
<a id="orgccfd5d3"></a>
## 設定說明
<a id="org8870582"></a>
### `config.yml` 的設定項目
- **license-key**
bot 註冊碼,請填寫 `IPICKUP-PRO-FREE` 以獲取免費授權。
- **dashboard**
網頁上的控制面版,打開網址 e.g. <http://localhost:5555> 可監察和操控任務。
- **port** dashboard 位址中的 port
- **notification**
設定後可發送成功預訂的通知。
- **discord** Discord webhook,請參照此連結以設立 Discord webhook <https://support.discord.com/hc/en-us/articles/228383668-Intro-to-Webhooks>
- **proxies**
Proxy 代理,設定為一行一組 proxy 列表。
每個 proxy 列表需有一個自定意的 proxy ID 指向 proxy 的檔案路徑,如 `[id]: [pathname]`
proxy 檔的格式須為純文字檔,每行一個 proxy 位址,並跟隨此格式 `[USERNAME:PASSWORD@IP:PORT]` 或 `[IP:PORT:USERNAME:PASSWORD]`
*參考範例:*
proxies:
monitor: proxies/monitor.txt
checkout: proxies/checkout.txt
startup: proxies/startup.txt
- **profiles**
帳戶資料的設定,取機時作身份核實的用途。 設定為一陣列的 profiles,每一組 profile 需跟隨一個自定意的 profile ID。
*profile 的設定欄位:*
- **first-name** 名字
- **last-name** 姓氏
- **email** 電郵地址
- **email-domain** 個人電郵域名,如使用此項便無需填寫 `email`, email address 為自動生成 e.g. xxxx@domain
- **email-prefix** 會於自動生成的 email address 前面加上 prefix,必須配合 `email-domain` 使用
- **tel** 電話號碼,可選填,如不填便會自動生成
- **addr-1** 地址 1,可選填,如不填便會自動生成
- **addr-2** 地址 2,可選填,如不填便會自動生成
- **obfuscate** [true / false] 如 true 便會於 first-name 後面加上随機生產的字串 (不建議)
- **gmail** [true / false] 如 true+obfuscate 便會於 email 地址字串之間随機加上 `.` (不建議)
*參考範例:*
profiles:
profile-1: # 此為自定意的profile ID以作記認
email: hello@gmail.com
first-name: Tai Man
last-name: Chan
obfuscate: false
gmail: true
profile-2:
email-domain: mydomain.com # 使用email domain,會gen @mydomain.com 的forward電郵地址
first-name: AAA
last-name: BBB
obfuscate: true
- **credit-cards**
支付用的付款卡。 設定為一陣列的付款卡,每一組付款卡需跟隨一個自定意的 ID。
*每組付款卡的設定欄位:*
- **type** 卡類型 [ `VISA` / `MASTERCARD` / `AMERICAN_EXPRESS` ]
- **number** 卡號碼
- **exp** 到期日,格式 MM/YY
- **cvv** 安全碼,如 0 字開頭必須加上引號
*參考範例:*
credit-cards:
cc-1: # 此為自定意的credit card ID以作記認
type: VISA
number: 4242424242424242
exp: 02/25
cvv: 333
cc-2:
type: MASTERCARD
number: 5555555555554444
exp: 02/25
cvv: '033'
- **monitor**
監察器設定,如不使用檢測模式 (scan-stock) 可將此項目移除。
*可設定的欄位:*
- **interval** 檢測間距毫秒(ms)
- **proxy** proxy 列表,參數是自定的 proxy ID
- **models** 檢測的型號,如沒提供,則會跟據 `properties.yml` 內的所有型號均會檢測
- **disabled** [true / false] 如 true 便關閉 monitor 不使用
- **mode** [normal / brute-force],預設為 normal, brute-force 是暴力模式,可獲取更快的供應情況,但不穩定及容易導致 ban IP
*參考範例:*
monitor:
interval: 0
proxy: monitor
mode: normal
models:
- pro-128gb-natural-titanium
- pro-128gb-blue-titanium
- pro-128gb-white-titanium
- pro-128gb-black-titanium
- pro-256gb-natural-titanium
- pro-256gb-blue-titanium
- pro-256gb-white-titanium
- pro-256gb-black-titanium
- pro-max-256gb-natural-titanium
- pro-max-256gb-blue-titanium
- pro-max-256gb-white-titanium
- pro-max-256gb-black-titanium
- pro-max-512gb-natural-titanium
- pro-max-512gb-blue-titanium
- pro-max-512gb-white-titanium
- pro-max-512gb-black-titanium
- **runtime**
執行設定
- **browser-mode** 瀏覽器模式
- **max-browsers-open-allowed** 最多同時開啟 browser 的數量,以防止同時開啟過多 browser 會導致 hang 機的情況
- **task-groups**
任務組 (task group) 的設定提供預設的 settings for tasks in a task group
每個 task group 需指向一個 `task-file` ,相同路徑的 `task-file` 可重覆使用。
除 `task-file` 是 task group 獨有外,task file 內的 task 的欄位跟 task group 相同但都非必需填寫,填寫了會覆蓋 task group 的設定,否則便會繼承 task group 的設定。
*task group / task 可設定的欄位:*
- **profile** 參數自定意的 profile ID
- **credit-card** 參數自定意的 credit card ID,選填,如不提供便會隨機揀選已有的 credit card (使用禮品卡除外)
- **gift-cards** 禮品卡的 PIN,支援 multiple
- **checkout-proxy** checkout 用的 proxy 列表,參數為自定意的 proxy ID
- **startup-proxy** 登錄和監察用的 proxy 列表,參數為自定意的 proxy ID
- **pre-submit** 預先提交,參數 true / false (不建議)
- **scan-stock** 檢測存貨,參數 true / false,如 true 需啟動 monitor 設定 (建議)
- **fixed-user-agent** 固定 user agent,參數 true / false,預設 false 是每個 request 使用不同的 user agent
- **model** 訂購商品的型號 reference ID,請參照 `properties.yml`
- **stores** 店舖 reference ID,請參照 `properties.yml` ,支援 multiple
- **stores-order** 店舖排序,使用 reference ID,multiple
- **submit-delay** 延遲提交,共用一個數值 ms(毫秒); 或可細分以下組別:
- **pickup** (提取)
- **contact** (聯絡)
- **payment** (付款)
- **review** (檢查)
- **retry-delay** 重試 delay ms(毫秒)
- **qty** 訂購數量: 1/2,預設 1
- **num** task 生成的數量,預設 1
- **pickup-date** 取貨日期: `earliest` / `latest` / `random` ,預設 `random`
- **pickup-time** 取貨時間: `earliest` / `latest` / `random` ,預設 `random`
- **safe-mode** 減低請求速度以模擬人手操作,參數為 true / false,或可用三等級分類: `low` / `medium` / `high`
- **browser-mode** 使用瀏覽器落單,參數 true / false,或可用以下參數:
- **headless** 隱藏瀏覽器,參數為 true / false
- **block-images** 不載入圖片,參數為 true / false
- **input-delay** 輸入延遲,參數為數值 ms(毫秒)
- **click-delay** 接鍵延遲,參數為數值 ms(毫秒)
- **remarks** 成功預訂後可顯示備註訊息於 dashboard / discord webhook 以作辨認
*參考範例:*
task-groups:
- # task group 1
task-file: tasks/sample-1.yml
checkout-proxy: null
startup-proxy: startup
pre-submit: false
scan-stock: true
fixed-user-agent: false
model: pro-128gb-black-titanium
stores-order: [fw, tst, ifc, cwb, apm, ntp]
profile: profile-1
credit-card: cc-1
retry-delay: 20
submit-delay: 1000
safe-mode: low
- # task group 2
task-file: tasks/sample-2.yml
checkout-proxy: checkout
startup-proxy: startup
pre-submit: false
scan-stock: true
fixed-user-agent: true
model: pro-max-256gb-natural-titanium
stores: [fw, tst, ifc, cwb]
profile: profile-2
credit-card: cc-2
retry-delay: 0
submit-delay:
contact: 2000
payment: 2500
safe-mode: false
browser-mode:
headless: false
block-images: true
input-delay: 20
click-delay: 40
<a id="orgc029025"></a>
## 常見問題 / FAQ
<a id="org2c46dc4"></a>
### config.yml 不能讀取
請檢查 YAML 格式是否正確 <https://codebeautify.org/yaml-validator>
<a id="org3d92371"></a>
### 如何加入其他型號/機款?
可添加至 `properties.yml` 的 `models` 如下:
model-id: # 自定意的型號ID
sku: SKU # Apple商品 part number / SKU
name: NAME # 商品名稱
<a id="org40d3d8b"></a>
### Console 顯示的中文字為亂碼
- Windows 10
- Control Panel -> Region


<a id="orge2f07db"></a>
### **如何保存 log 或將程式放置於背後運作**
建議使用 [PM2](https://pm2.keymetrics.io/) ,於 bot 應用程式的 folder 內新增 `ecosystem.config.js` 內容如下:
module.exports = {
apps : [{
name : "ipickup-pro",
script : "./ipickup_pro-linux-x64 -y",
"args": [
"--color"
],
"env": { "DEBUG_COLORS": true }
}]
}
執行輸入 `pm2 start` 即可。
<a id="org897cc4a"></a>
### 常見的錯誤和處理方法
- **訂單只能送貨**
- Apple Store 的風控管理,可調試不同的 delay 和開啟 `safe-mode` ,或使用 `browser-mode` (不建議,因 `browser-mode` 太慢和佔用較多資源)
- 可使用[虚假信用卡](https://saijogeorge.com/dummy-credit-card-generator/)來測試有貨的商品,如設定能通過風控,會出現 card declined 的 error
- **監察器未能獲取訊息**
如果在 console 和 dashboard 的監察 bar 上持續顯示此訊息,則表示 IP ban,需切換 IP/proxy 或將 `interval` 的數值調高。
- **登錄失敗,即將重試 / 不能打開頁面 / Server 未能接收請求, 即將重新提交…**
- IP ban,需切換 IP/proxy
- 如沒有足夠的 IP/proxy,則減少 Tasks 數量
<a id="org228a0ea"></a>
### 技術支援或問題回報等
歡近加入 [iPickup Pro 用戶交流群](https://t.ly/vea4k) 參與討論及研究。