Open peter801117 opened 3 years ago
@peter801117 您好 我個人經驗也都是使用 Proxy IP 去避免被擋 但反爬蟲的機制每個網站都不一樣 有些網站是用每個 request 之間的時間差做機器人判定 PChome 最近的反爬蟲我還沒有測試過 希望如果有人測試過可以提供出來給大家參考
目前這個專案也只是提供大家多一點搶到的機會 所以除了可調整重試次數和等待秒數之外,可能也要自行抓準開賣時機
請問您有計算過從開始搶購到結帳完成花了多少時間嗎? 我的環境大概需要5~6秒, 我怕這樣還太慢搶不到PS5
我之前也是大概 5 秒左右完成結帳 但搶購有時候關鍵在於網站伺服器的狀況,有時候一直轉圈圈也沒輒 我覺得 5 秒算是有爭取到一點時間、至少可以贏過手動的速度了 如果有更快的方法的話可以發個 PR 分享一下~
@peter801117 加上headers&cookies即可,我目前try個100次沒問題 不過我不會python,現在是手動將頁面在google chrome中打開把headers跟cookies複製下來手動key進去,不知道多久會變化一次,希望可以有自動抓取的方法。 另外 if-none-match 這個header不知道要怎麼處理,目前先跳過這個,不過執行沒問題。
我用datetime做了一個計時器,可以在settings中加入商品公告的預購日期,讓程式不斷倒數直到預購開始的那一刻就啟動,我不是python大神,所以可能有更好的辦法,獻醜了。 程式如下 新壓縮 (zipped) 資料夾.zip
@simonkq1 感謝你的測試回報!
這邊附上我抓 cookies 的方法給其他 Python 使用者參考
session = requests.Session()
resp = session.get('https://ecapi.pchome.com.tw/ecshop/prodapi/v2/prod/button&id=DMAC0E-A900BM311', headers=headers)
print(resp.cookies._cookies)
# output: []
@k19950907 很有實驗精神~用計時器也是不錯的想法
雖然是可以避免掉一直重試被擋的問題 但這樣抓的時間怕是會跟 PChome 本身的時間有差距 我不確定有沒有可能可以抓 PChome 網頁本身的時間來做
@jumpingchu 謝謝! 我是有想到可以將時間設定提前1秒,在開賣前就啟動程式然後判斷商品是否開始販售 時間差的部分,我看到的差異都在0.5-0.7秒左右,應該是不會變成比人工操作還慢,除非pchome在過時間和大家不一樣
@k19950907 感謝測試時間差! 提前 1 秒開始啟動判斷也還不錯
其實我也是寫了倒數計時功能來啟動程式 但測試幾次發現有點問題 我拿PCHOME三賞特賣來測試, 分別有10點 15點 21點三個時段 我每次設定好準點開始跑程式都會慢個十秒才撈到開賣的資訊 不確定是否是PCHOME刻意擋掉還是我電腦時間真的跟PCHOME不同步 這次搶PS5足足慢了十秒才開始, 根本連加入購物車都沒成功..殘念
作者您好, 因為搶購程式是透過送HTTP request去polling, 實際測試大概10次之後就會被pchome擋個幾秒, 才能成功要到一次HTTP response 請問除了開VPN跟掛proxy去改IP以外, 還有什麼方法可以規避掉嗎? 謝謝