2016-10-25 18 views
0

フィッシング詐欺の可能性を検証するために小さな機能を実装しようとしていて、GoogleセーフブラウジングAPIを使用するとよいスタートだと思っていました。GoogleセーフブラウジングAPI v4とPythonリクエストで予期しない応答が発生しました

APIドキュメントを読んだ後、私は物事のハンドルを持っていたと思ったし、一緒に次のコード石畳:私は

プリント(json.dumps(ペイロード、インデントを行う場合

import requests 
import json 

url = "https://safebrowsing.googleapis.com/v4/threatMatches:find?key=<REDACTED>" 
headers = {'content-type': 'application/json'} 

payload = {'client': {'clientId': "mycompany", 'clientVersion': "0.1"}, 
     'threatInfo': {'threatTypes': ["SOCIAL_ENGINEERING", "MALWARE"], 
         'platformTypes': ["ANY_PLATFORM"], 
         'threatEntryTypes': ["URL"], 
         'threatEntries:': [{'url': "http://www.urltocheck1.org"}]}} 

print (json.dumps(payload, indent=4)) 

r = requests.post(url, headers=headers, json=payload) 

を= 4)

それはすべて OKに見えます。しかし、私は戻ってGoogleからの取得応答が一致していない。

{'エラー':{'メッセージ': '無効なJSONペイロードが受信されました。不明な名前 「threat_entries:」が\ 'threat_info \':フィールドが見つかりません '、' status ': ' INVALID_ARGUMENT '、' code ':400、' details ':[{' @type ': ' googleapis.com/google.rpc.BadRequest '、' fieldViolations ': [{' field ':' threat_info '、' description ':'無効なJSONペイロード が届きました。 「X-Frame-Options」:「SAMEORIGIN」、 「転送エンコード」:「チャンク」、「チャンク」、「チャプター」、キャッシュコントロール ':' private '、' Date ': ' Tue、2010年10月25日07:55:30 GMT '、' Content-Type ':' application/json; charset = UTF-8 '、' Alt-Svc ':' quic = ":443"; ma = 2592000; v = "36,35,34,33,32"、 'X-Content-Type-Options': 'nosniff'、 'コンテンツエンコーディング': 'gzip'、 'X-XSS-Protection': ' 1; mode = block '、 'サーバー ':' ESF '}アプリケーション/ json;文字セット= UTF-8

私はいつものように私の間違いを見つけられません。他の誰かがそれを見つけて、私を正しい軌道に乗せることができますか?

答えて

1

threatEntries の後に不要なコロンを削除するだけで正常に動作するはずです。また

あなたが代わりにあなたがparamsセクションにあなたの鍵を移動することができ、requestsバージョン2.4.2またはあなたのコードにcontent-typeヘッダを挿入する必要はありません以降を使用している場合:

import requests 
import json 

api_key='your_key' 
url = "https://safebrowsing.googleapis.com/v4/threatMatches:find" 
payload = {'client': {'clientId': "mycompany", 'clientVersion': "0.1"}, 
     'threatInfo': {'threatTypes': ["SOCIAL_ENGINEERING", "MALWARE"], 
         'platformTypes': ["ANY_PLATFORM"], 
         'threatEntryTypes': ["URL"], 
         'threatEntries': [{'url': "http://www.urltocheck1.org"}]}} 
params = {'key': api_key} 
r = requests.post(url, params=params, json=payload) 
# Print response 
print(r) 
print(r.json()) 
関連する問題