万步健康app
77.51MB · 2025-09-10
Blackbird是一款强大的OSINT(开源情报)工具,专为用户名和邮箱搜索而设计。该工具集成了WhatsMyName项目的600多个社交平台数据库,能够快速准确地查找目标账户在不同平台的存在情况。项目采用Python开发,提供命令行界面,支持AI智能分析和多种数据导出格式。
系统要求: Python 3.6+,支持Windows、Linux、macOS系统
# 克隆仓库
git clone https://github.com/p1ngul1n0/blackbird
cd blackbird
# 安装依赖
pip install -r requirements.txt
依赖项: rich、aiohttp、reportlab、python-dotenv、requests等
基本用户名搜索:
python blackbird.py --username johndoe
邮箱搜索:
python blackbird.py --email [email protected]
使用AI分析:
python blackbird.py --username johndoe --ai
导出PDF报告:
python blackbird.py --email [email protected] --pdf
设置AI API密钥:
python blackbird.py --setup-ai
主程序初始化:
def initiate():
if not os.path.exists("logs/"):
os.makedirs("logs/")
logging.basicConfig(
filename=config.LOG_PATH,
level=logging.DEBUG,
format="%(asctime)s - %(name)s - %(levelname)s - %(message)s",
)
parser = argparse.ArgumentParser(
prog="blackbird",
description="An OSINT tool to search for accounts by username in social networks.",
)
parser.add_argument(
"-u",
"--username",
nargs="*",
type=str,
help="One or more usernames to search.",
)
站点检查核心逻辑:
async def checkSite(site, method, url, session, semaphore, config):
returnData = {
"name": site["name"],
"url": url,
"category": site["cat"],
"status": "NONE",
"metadata": None,
}
async with semaphore:
response = await do_async_request(method, url, session, config)
if response == None:
returnData["status"] = "ERROR"
return returnData
try:
if response:
if (site["e_string"] in response["content"]) and (
site["e_code"] == response["status_code"]
):
if (site["m_string"] not in response["content"]) and (
(site["m_code"] != response["status_code"])
if site["m_code"] != site["e_code"]
else True
):
returnData["status"] = "FOUND"
AI分析功能:
def send_prompt(prompt, config):
config.console.print(f":sparkles: Analyzing with AI...")
apikey = load_api_key_from_file(config)
if not apikey:
config.console.print(":x: No API key found. Please obtain an API key first with --setup-ai")
return None
headers = {
"Content-Type": "application/json",
"User-Agent": "blackbird-cli",
"x-api-key": apikey
}
payload = {
"prompt": prompt
}
PDF导出功能:
def saveToPdf(foundAccounts, resultType, config):
regularFontFile = os.path.join(
os.getcwd(),
config.ASSETS_DIRECTORY,
config.FONTS_DIRECTORY,
config.FONT_REGULAR_FILE,
)
boldFontFile = os.path.join(
os.getcwd(),
config.ASSETS_DIRECTORY,
config.FONTS_DIRECTORY,
config.FONT_BOLD_FILE,
)
try:
pdfmetrics.registerFont(TTFont(config.FONT_NAME_REGULAR, regularFontFile))
pdfmetrics.registerFont(TTFont(config.FONT_NAME_BOLD, boldFontFile))
马斯克再次盛赞特斯拉 AI5 芯片:将比 AI4 芯片强 40 倍
559 元:微软 Xbox 手柄“破界者”特别版上架,可选冰霜之影 / 琉璃之心 / 风暴之刃配色