Ungültige Anfrage in Google Safe-Browsering Lookup API
-
27-10-2019 - |
Frage
Ich versuche, eine Anfrage an die Google Safe -Browser -Lookup -API zu senden. Es fordert den Benutzer nach einer URL auf, für die er nachschlagen möchte. Es gibt jedoch ein Problem damit, wie ich die Anfrage sende, da sie mit dem Fehlercode 400 weiterhin antwortet. Bitte helfen Sie.
import urllib
import urllib2
from google.appengine.ext import webapp
from google.appengine.ext.webapp import util
from google.appengine.api import urlfetch
req_url = "https://sb-ssl.google.com/safebrowsing/api/lookup"
class MainHandler(webapp.RequestHandler):
def get(self):
self.response.out.write("""<html>
<body>
<form action='' method='POST'>
<input type='text' name='url'>
<input type='submit' value='submit!!'>
</form>
</body>
</html>""")
def post(self):
post_data = {'client':'api',
'apikey':'My-API-Key',
'appver':'1.5.2',
'pver':'3.0',
'url':"%s"% self.request.get('url') }
data = urllib.urlencode(post_data)
try:
req = urlfetch.fetch(url = req_url,
payload = data,
method = urlfetch.POST,
headers = {'Content-Type': 'application/x-www-form-urlencoded'})
if req.status_code == '200':
self.response.out.write("success")
self.response.out.write(req.content)
else:
self.response.out.write("Error code %s!!!"% req.status_code)
except urllib2.URLError, e:
self.response.out.write("Exception Raised")
handleError(e)
def main():
application = webapp.WSGIApplication([
('/', MainHandler)
],debug=True)
util.run_wsgi_app(application)
if __name__ == '__main__':
main()
Lösung
Sie scheinen dem Protokoll weder für die GET- noch Post -Methode zu folgen, sondern tun etwas dazwischen, indem Sie über die GET -Parameter per Post übergeben werden.
Probieren Sie diese Methode aus:
import urllib
from google.appengine.api import urlfetch
def safe_browsing(url):
"""Returns True if url is safe or False is it is suspect"""
params = urllib.urlencode({
'client':'api',
'apikey':'yourkey',
'appver':'1.5.2',
'pver':'3.0',
'url': url })
url = "https://sb-ssl.google.com/safebrowsing/api/lookup?%s" % params
res = urlfetch.fetch(url, method=urlfetch.GET)
if res.status_code >= 400:
raise Exception("Status: %s" % res.status_code)
return res.status_code == 204
Was würde wie:
>>> safe_browsing('http://www.yahoo.com/')
True
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow