亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

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 關注
  • 147 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號