API
Api接口也就是所谓的应用程序接口,api接口的全称是Application Program Interface,通过API接口可以实现计算机软件之间的相互通信,开发人员可以通过API接口程序开发应用程序,可以减少编写无用程序,减轻编程任务,API 同时也是一种中间件,为各种不同平台提供数据共享。根据单个或分布式平台上不同软件应用程序间的数据共享性能。
举个例子来说明,就是当你在购物平台上买东西付款之后,商家选择某一快递公司发货,然后你就可以在购物平台上面查看快递的实时进程。购物平台和快递公司都是独立的公司,为什么能够在购物平台看到快递公司的信息呢,这里就是用到了API,当你在查看快递信息的时候,购物平台的内部系统也开始运作,购物平台通过快递公司提供的API接口,可以实时调取快递信息到网站上。除此之外,你还可以在搜索引擎上输入快递的订单号进行查询,只要是通过快递公司的允许别的公司都可以通过快递公司的API接口调取到快递信息。
而API接口平台大多都是用来开发新的应用软件的,这样可以有效的避免因为程序员编写的接口有问题,导致拖延时间,无法在应有的时间内完成软件的编写,但是在有了api接口程序之后,能够帮助开发者提升开发效率,可以大大的缓解这种情况的发生,可以让开发人员更加有效的完成软件的开发工作。能以一种简单的方式实现App里的某个服务已经成为开发者们最好的选择。
子域名扫描脚本
这里借助virustotal.com平台通过接口的形式,根据api返回的结果和形式进行筛选得到子域名
参考:https://developers.virustotal.com/reference#domain-report
import requests
import sys
def main(domain, apikey):
url = 'https://www.virustotal.com/vtapi/v2/domain/report'
params = {'apikey': apikey, 'domain': domain}
try:
response = requests.get(url, params=params)
j_data = response.json()
domains = sorted(j_data['subdomains'])
except(KeyError):
print("No domains found for %s" % domain)
exit(0)
except(requests.ConnectionError):
print("Could not connect to www.vitustotal.com", file=sys.stderr)
exit(1)
print('[+] A total of %d domain names were found' % len(domains))
i = 1
for domain in domains:
print("[%d] %s" % (i, domain))
i = i + 1
if __name__ == '__main__':
domain = input("Please enter a domain: ")
# domain = 'baidu.com'
# apikey = input("Please enter a private apikey: ")
apikey = 'your-apikey'
main(domain, apikey)
其中apikey需要在virustotal.com平台上注册获取,这里扫描baidu.com,得到100个子域名: