[API] 被 Instagram 鎖 IP 怎麼辦?
2015 Nov 09 未分類
之前幫 pupupepe.com 寫了一個查 Instagram 近況的小程式...
老闆想要在紅色框框的地方放一個 Instagram 的輪播
老闆有給一個別的網站的案例
不過我想這類的東西應該有 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
然後間隔能多長就多長
更新很慢總比被鎖沒東西好
目前設定的間隔時間是六小時 (夠長了吧)
如果又被鎖路老闆再上來回報