import shodan
import sys
from ConfigParser import ConfigParser

#grab the api key from auth.ini
config = ConfigParser()
config.read('auth.ini')
SHODAN_API_KEY = config.get('auth','API_KEY')

#initialize the api object
api = shodan.Shodan(SHODAN_API_KEY)\

# Input validation
if len(sys.argv) == 1:
        print 'Usage: %s <search query>' % sys.argv[0]
        sys.exit(1)

try:

        query = ' '.join(sys.argv[1:])
        parent = query
        exploit = api.Exploits(parent)
        #WHY DOESNT THIS WORK
        #AttributeError: 'str' object has no attribute '_request'
        print exploit.search(query)

except Exception, e:
        print 'Error: %s' % e
        sys.exit(1)

使用Python2.7
我得到attributeRor:“str”对象没有属性“\u request”
回溯错误显示Shodan API的client.py中的第79行,是仅仅是我还是他们的代码不稳定?
这是回溯
Traceback (most recent call last):
  File "exploitsearch.py", line 26, in <module>
    print exploit.search('query')
  File "/usr/local/lib/python2.7/dist-packages/shodan/client.py", line 79, in search
    return self.parent._request('/api/search', query_args, service='exploits')
AttributeError: 'str' object has no attribute '_request'

最佳答案

我是Shodan的创始人,也是你正在使用的相关图书馆的作者上面的john gordon给出了正确答案:
您不需要实例化Exploits类,它是在您创建shodan()实例时自动为您完成的。这意味着您可以直接搜索内容而无需任何额外工作:

    api = shodan.Shodan(YOUR_API_KEY)
    results = api.exploits.search('apache')

关于python - AttributeError:“str”对象的Shodan API没有属性“_request”,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33441054/

10-11 07:33