Google SafeBrowsing API:始终出错

时间:2014-07-31 09:07:34

标签: python python-3.x safe-browsing

我使用谷歌安全浏览API。所以我测试了这个简单的代码:

from safebrowsinglookup import SafebrowsinglookupClient

class TestMe:
    def testMe(self):
        self.key='my_Valid_Key_Here'        
        self.client=SafebrowsinglookupClient(self.key)
        self.response=self.client.lookup('http://www.google.com')
        print(self.response)

if __name__=="__main__":
    TM=TestMe()
    TM.testMe()

无论我测试哪个网站,我总是得到这个:

  

{' website_I_tried''错误'}

请注意,我在安装此API后必须更改源代码中的某些行,因为它是用Python 2编写的,而我使用的是Python 3.4.1。我该如何解决这个问题?


更新

要理解为什么上述问题发生在我身上,我运行此代码:

from safebrowsinglookup import SafebrowsinglookupClient  

class TestMe:
    def testMe(self):
        self.key = 'my_key_here'        
        self.client=SafebrowsinglookupClient(self.key,debug=1)
        urls = ['http://www.google.com/','http://addonrock.ru/Debugger.js/']        
        self.results = self.client.lookup(*urls)
        print(self.results['http://www.google.com/'])

if __name__ == "__main__":
    TM=TestMe()
    TM.testMe()

现在,我收到了这条消息:

BODY:
2
http://www.google.com/
http://addonrock.ru/Debugger.js/


URL: https://sb-ssl.google.com/safebrowsing/api/lookup?client=python&apikey=ABQIAAAAAU6Oj8JFgQpt0AXtnVwBYxQYl9AeQCxMD6irIIDtWpux_GHGQQ&appver=0.1&pver=3.0
Unexpected server response

name 'urllib2' is not defined
error
error

1 个答案:

答案 0 :(得分:3)

The library不支持Python3.x.

在这种情况下,您可以make it support Python3(Python3兼容性也有opened pull request),或者向#34; Google Safebrowsing API"手动。

以下是使用requests的示例:

import requests

key = 'your key here'
URL = "https://sb-ssl.google.com/safebrowsing/api/lookup?client=api&apikey={key}&appver=1.0&pver=3.0&url={url}"


def is_safe(key, url):
    response = requests.get(URL.format(key=key, url=url))
    return response.text != 'malware'


print(is_safe(key, 'http://addonrock.ru/Debugger.js/'))  # prints False
print(is_safe(key, 'http://google.com'))  # prints True

同样但没有第三方软件包(使用urllib.request):

from urllib.request import urlopen


key = 'your key here'
URL = "https://sb-ssl.google.com/safebrowsing/api/lookup?client=python&apikey={key}&appver=1.0&pver=3.0&url={url}"


def is_safe(key, url):
    response = urlopen(URL.format(key=key, url=url)).read().decode("utf8")
    return response != 'malware'


print(is_safe(key, 'http://addonrock.ru/Debugger.js/'))  # prints False
print(is_safe(key, 'http://google.com'))  # prints True