为了账号安全,请及时绑定邮箱和手机立即绑定

Python:Foursquare API 和请求需要 cookie 和 javascript

Python:Foursquare API 和请求需要 cookie 和 javascript

一只斗牛犬 2022-04-27 13:12:52
问题我正在尝试联系 Foursquare API,特别是 checkin/resolve 端点。在过去,这是可行的,但最近我被一条错误消息阻止,说我是机器人,并且无法读取 cookie 和 javascript。代码response = "Swarmapp URL" # from previous functions, this isn't the problemcheckin_id = response.split("c/")[1] # To get shortIDurl = "https://api.foursquare.com/v2/checkins/resolve"params = dict( client_id = "client_id", client_secret = "client_secret", shortId = checkin_id, v = "20180323")headers = {'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36'}time.sleep(8.5) # Limit of 500 requests an hourresp = requests.get(url = url, params=params, headers = headers)data = json.loads(resp.text)此代码适用于大约 30-40 个请求,然后出错并返回一个 HTML 文件,其中包括:“请验证您是人类”、“访问此页面已被拒绝,因为我们认为您正在使用自动化工具浏览该网站。” 、“您的浏览器不支持cookies”等。我试过谷歌搜索并在这个网站上搜索类似的错误,但我找不到任何有帮助的东西。Foursquare API 也没有说明这一点。有什么建议么?
查看完整描述

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


查看完整回答
反对 回复 2022-04-27
  • 1 回答
  • 0 关注
  • 114 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号