六月份的KPI包含针对公司暴露在外部的员工进行一次钓鱼演练。标靶对象除了明面上直接对外的客服人员和人力招聘,还包括暴露在外网的所有公司邮箱。那么问题来了,要怎样才能事无巨细的将暴露在外的邮箱收集起来呢。起初尝试在Google搜集,一圈下来除开个别暴露基本就只剩一堆不知道是否在用的客服邮箱。后来在Google上冲浪了一圈,有了本文的的主角:Snovio
官网地址:https://snov.io/
Snovio是一个集成了“LinkedIn、GitHub、Moz、StackOverflow、Indeed、Behance、Upwork、Google页面邮箱采集”+“邮箱验证”+“联系人管理”+“邮件发送”为一身的网站。在Snovio只要输入一个域名,就可以采集到该域名在以上平台中暴露的所有邮箱地址,还支持API批量读取。在横向对比了几个网站之后我发现这网站绝对算得上是邮箱收集者的福音。
按域名搜索邮箱,以baidu.com为例搜索到的邮箱大概有8100个。辣是真滴牛皮。
通过api批量搜索邮箱:
第一步,拿到自己的 User ID和Secret
第二步,根据想要的功能拿他的代码直接用,他支持的功能很多,包括邮箱查找、邮箱验证和自动化批量发送邮件。根据自身需求调用对应的接口即可。
第三步:我的需求很简单,只需要根据域名获取邮箱即可。于是:
import json, requests
def get_access_token():
params = {
'grant_type': 'client_credentials',
'client_id': 'your User ID',
'client_secret': 'your Secret'
res = requests.post('https://api.snov.io/v1/oauth/access_token', data=params)
resText = res.text.encode('ascii', 'ignore')
return json.loads(resText)['access_token']
def get_domain_search():
token = get_access_token()
params = {
'access_token': token,
'domain': 'test.com',
'type': 'all',
'limit': 20,
'lastId': 0
res = requests.get('https://api.snov.io/v2/domain-emails-with-info', params=params)
return json.loads(res.text)
if __name__ == '__main__':
a = get_domain_search()
print(a['lastId'])
for i in a['emails']:
print(i['email'])
效果如图:
试用账户每个月有50个信用点数,所以每个月可以搜索采集100个邮箱地址。如果如果你的的脚本报下面这样的错,那一定是你的信用点数用光了,该充钱了。
作为一个白嫖党,我是必不可能充钱的。解决方案:将上面脚本打印出来的lastID放到上面脚本中去替换'lastId': 0,然后换一个邮箱使用新的 User ID和Secret,又可以继续冲了。所以理论上来说,只要我的邮箱足够多,那么我同事收集邮箱的速度一定赶不上我。
热门跟贴