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端点被破坏。无论哪种方式,代码都有效。
添加回答
举报