[API] 被 Instagram 鎖 IP 怎麼辦?

之前幫 pupupepe.com 寫了一個查 Instagram 近況的小程式…

pupupepe 官網

老闆想要在紅色框框的地方放一個 Instagram 的輪播

pupupepe.com IG 案例

老闆有給一個別的網站的案例

不過我想這類的東西應該有 API

所以去 Instagram 申請了一個 (其實我是沒在用 Instagram 的)

然後看了一下 API

滿簡單的

https://api.instagram.com/v1/users/{USER_ID}/media/recent/?client_id={CLIENT_ID}

紅色的地方

USER_ID 就放你要抓的人的 ID (數字)

CLIENT_ID 就放你申請的 API 的那組 CLIENT_ID

然後直接去搓這個 URL

你就會拿到一串很長的 JSON 格式的資料

用 json_decode 解開來以後是一個陣列

會放最新上傳的 N 張圖 (大概5張還10張吧)

反正就把你想要的圖片尺寸的 URL 讀出來

看要存資料庫還是怎樣

我本來是寫即時的

有一個人來開 就搓一次

但有點經驗的人就知道

這樣很快就會被 Instagram 鎖了

而且就算不被鎖

你的網站會有一個固定的聯外 卡住整個網站的速度

所以直接放在首頁的 code 一定不是個好方法

所以我把它弄成一個 cron

大概 5 分鐘搓一次

老闆很常更新 Instagram

所以我想 5 分鐘應該夠快了

結果上禮拜開始

那塊就爛掉了

抓不到東西

debug 了一下

發現很明顯被鎖了

因為同一串 URL

我在瀏覽器搓 有東西

在 server 上 就沒東西

我查了一下 API 的使用規範

對於 API END POINT 的用法

因為 END POINT 不用認證

所以有限制每小時/每天的存取次數

我就算5分鐘搓一次

一小時 12 次

一天也才 288次

比起規定的一小時500次 少太多了

好吧 怎麼辦呢

只能申訴了

Instagram 沒什麼聯絡我們表單

只有 API bug 報修之類的

反正就跟之前對 Google 反應 Google Document 刪垃圾桶救檔案的過程一樣

大公司好像都不 care 這種客戶服務的事情

找個聯絡我們都找不到

我只找到兩個可以回報的地方

填寫送出後 過了一週 果然完全沒有人回我

(如果我今天要買廣告應該馬上就有人回覆我了)

IP 是虛擬主機的

我已經把這 IP 弄臭了

我得弄別的 IP 來做這件事情

幸好 VPS 上掛了不少拿來用 SSL 的 IP

最遭的狀況就是 assign 一個新的 IP 給這個網站

只是這次間隔時間要很保守

因為 IP 再搞掛被 ban

就很麻煩了

結論就是

被鎖沒啥辦法 只能換一個 IP

然後間隔能多長就多長

更新很慢總比被鎖沒東西好

目前設定的間隔時間是六小時 (夠長了吧)

如果又被鎖路老闆再上來回報

發表迴響

你的電子郵件位址並不會被公開。 必要欄位標記為 *

這個網站採用 Akismet 服務減少垃圾留言。進一步瞭解 Akismet 如何處理網站訪客的留言資料