1 回答
TA貢獻1775條經驗 獲得超11個贊
回答 根據 Foursquare API 文檔,這段代碼應該可以工作:
import json, requests
url = 'https://api.foursquare.com/v2/checkins/resolve'
params = dict(
client_id='CLIENT_ID',
client_secret='CLIENT_SECRET',
v='20180323',
shortId = 'swarmPostID'
)
resp = requests.get(url=url, params=params)
data = json.loads(resp.text)
然而,Foursquare 使用的機器人檢測顯然與 API 的功能相矛盾。我發現try except使用等待計時器實現捕獲解決了這個問題。
import json, requests
url = 'https://api.foursquare.com/v2/checkins/resolve'
params = dict(
client_id='CLIENT_ID',
client_secret='CLIENT_SECRET',
v='20180323',
shortId = 'swarmPostID'
)
try:
resp = requests.get(url=url, params=params)
except:
time.sleep(60) # Avoids bot detection
resp = requests.get(url=url, params=params)
try:
resp = requests.get(url=url, params=params)
except:
print("Post is private or deleted.")
continue
data = json.loads(resp.text)
這似乎是一個非常奇怪的修復。Foursquare 要么實施了與其自身功能相矛盾的 DDoS 預防系統,要么他們的checkin/resolve端點被破壞。無論哪種方式,代碼都有效。
添加回答
舉報
