加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

python – Google Safe-Browsing Lookup API中的无效请求

发布时间:2020-12-20 13:23:38 所属栏目:Python 来源:网络整理
导读:我正在尝试向Google安全浏览查找API发送请求.它要求用户提供他想要查找的URL.但是,我发送请求的方式存在一些问题,因为它一直在回复错误代码400.请帮助. import urllibimport urllib2from google.appengine.ext import webappfrom google.appengine.ext.webap
我正在尝试向Google安全浏览查找API发送请求.它要求用户提供他想要查找的URL.但是,我发送请求的方式存在一些问题,因为它一直在回复错误代码400.请帮助.

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()

解决方法

您似乎没有遵循GET或POST方法的协议,而是通过POST传递应该是GET参数的内容.

试试这个方法:

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','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

哪个会像:

>>> safe_browsing('http://www.yahoo.com/')
True

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读