Demande non valide dans l'API Google Safe-navigation Recherche
-
27-10-2019 - |
Question
Je suis en train d'envoyer une demande à la sécurité Google navigation API de recherche. Il demande à l'utilisateur un pour une URL pour laquelle il veut faire le regard vers le haut. Cependant, avec la façon dont il y a un problème, je vous envoie la demande parce qu'il ne cesse de répondre avec le code d'erreur 400. aide Veuillez.
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()
La solution
Vous ne semblent pas suivre le protocole pour l'une ou l'autre méthode GET ou POST, mais font inbetween quelque chose en passant ce qui devrait être l'EEG params via POST.
Essayer cette méthode:
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
Ce qui fonctionnerait comme:
>>> safe_browsing('http://www.yahoo.com/')
True
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow