惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

P
Proofpoint News Feed
C
CERT Recently Published Vulnerability Notes
O
OpenAI News
V
Vulnerabilities – Threatpost
C
Cybersecurity and Infrastructure Security Agency CISA
S
Schneier on Security
Latest news
Latest news
F
Full Disclosure
T
Tenable Blog
T
Troy Hunt's Blog
The Last Watchdog
The Last Watchdog
S
Secure Thoughts
L
LangChain Blog
有赞技术团队
有赞技术团队
Project Zero
Project Zero
Cloudbric
Cloudbric
爱范儿
爱范儿
GbyAI
GbyAI
C
CXSECURITY Database RSS Feed - CXSecurity.com
T
The Exploit Database - CXSecurity.com
S
Security @ Cisco Blogs
Hugging Face - Blog
Hugging Face - Blog
Recorded Future
Recorded Future
大猫的无限游戏
大猫的无限游戏
Last Week in AI
Last Week in AI
C
Cisco Blogs
WordPress大学
WordPress大学
Apple Machine Learning Research
Apple Machine Learning Research
小众软件
小众软件
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
V2EX - 技术
V2EX - 技术
Engineering at Meta
Engineering at Meta
Spread Privacy
Spread Privacy
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
Hacker News: Ask HN
Hacker News: Ask HN
Recent Commits to openclaw:main
Recent Commits to openclaw:main
Schneier on Security
Schneier on Security
T
Threat Research - Cisco Blogs
M
MIT News - Artificial intelligence
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
K
Kaspersky official blog
The Hacker News
The Hacker News
V
V2EX
F
Fortinet All Blogs
L
LINUX DO - 最新话题
Cisco Talos Blog
Cisco Talos Blog
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
N
News | PayPal Newsroom
博客园 - 三生石上(FineUI控件)
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org

DEV Community

Authentication Security Deep Dive: From Brute Force to Salted Hashing (With Java Examples) Why AI Systems Don’t Fail — They Drift Spilling beans for how i learn for exam😁"Reinforcement Learning Cheat Sheet" I Replaced Chrome with Safari for AI Browser Automation. Here's What Broke (and What Finally Worked) How Python Borrows Other People's Work The $40 Architecture: Processing 1 Billion API Requests with 99.99% Uptime Vibe Coding: A Workflow Guide (From Zero to SaaS) Most webhook security guides protect the wrong side. The scary part is delivery. Headless CMS for TanStack Start: Build a Blog with Cosmic EU Age Verification App "Hacked in 2 Minutes" — What Actually Happened Comfy Cloud’s delete function does not actually remove files Running AI Models on GPU Cloud Servers: A Beginner Guide Event-driven media intelligence with AWS Step Functions and Bedrock I scored 500 AI prompts across 8 quality dimensions — here's what broke How to Call Google Gemini API from Next.js (Free Tier, No Backend Needed) The Portal Protocol: Reclaiming Human Connection in the Age of AI How to Fix Your Team's Scattered Knowledge Problem With a Self-Hosted Forum Intro to tc Cloud Functors: A Graph-First Mental Model for the Modern Cloud Designing Multi-Tenant Backends With Both Ownership and Team Access I Built a Neumorphic CSS Library with 77+ Components — Here's What I Learned PostgreSQL Performance Optimization: Why Connection Pooling Is Critical at Scale Cómo construí un SaaS multi-rubro para gestionar expensas en Argentina con FastAPI + Vue 3 🚀 I Built an Ethical Hacking Scanner Tool – Open Source Project I Replaced /usage and /context in Claude Code With a Single Statusline A Pythonic Way to Handle Emails (IMAP/SMTP) with Auto-Discovery and AI-Ready Design I Collected 8.9 Million Polymarket Price Points — Here's What I Found About How Markets Really Move EcoTrack AI — Carbon Footprint Tracker & Dashboard Everyone's Using AI. No One Agrees How. 5 self-hosted ebook managers worth trying in 2026 Building Your First AI Agent with LangChain: From Chatbot to Autonomous Assistant Common SOC 2 Failures (Real World) Stop Vibe-Checking Your AI App: A Practical Guide to Evals How to Use SonarQube and SonarScanner Locally to Level Up Your Code Quality Your Next To-Do App Is Dead — I Replaced Mine with an OpenClaw AI Sign a Nostr event in 60 lines of Python using coincurve — no nostr-sdk, no nbxplorer, no rust toolchain ITGC Audit Explained Like You’re in Big 4 Patch Tuesday abril 2026: Microsoft parcha 163 vulnerabilidades y un zero-day en SharePoint Stop scraping everything: a better way to track competitor price changes Listing on MCPize + the Official MCP Registry while routing payments OUTSIDE the marketplace — how I kept 100% of my x402 revenue Building an AI-Powered Risk Intelligence System Using Serverless Architecture Why We Ripped Function Overloading Out of Our AI Toolchain Testing AI-Generated Code: How to Actually Know If It Works SaaS Churn Is Killing Your Business. Here Is What to Do About It (Without a Support Team) The Speed of AI Is No Longer Linear - And Self-Improving Models Are Why How to Implement RBAC for MCP Tools: A Practical Guide for Engineering Teams From Standard Quote to Persuasive Proposal: AI Automation for Arborists I built a CLI that scaffolds complete multi-tenant SaaS apps Axios CVE-2025–62718: The Silent SSRF Bug That Could Be Hiding in Your Node.js App Right Now The dashboard that ended our friendship Data Pipelines Explained Simply (and How to Build Them with Python) The Hidden Cost of AI Systems Nobody Talks About. undefined vs undeclared, and how typeof behaves Switching from file-based jobs to NATS/Kafka in Rust without changing code io_uring Adventures: Rust Servers That Love Syscalls Why Agentic AI is Killing the Traditional Database The POUR principles of web accessibility for developers and designers Quantum Neural Network 3D — A Deep Dive into Interactive WebGL Visualization How To Install Caveman In Codex On macOS And Windows Automation Pipeline Reliability: Why Your Workflow Breaks When Nobody Is Watching I Built an 'Open World' AI Coding Agent — It Works From ANY Folder From Freelancing to Product: A Tech Service Company's SaaS Transformation China's AI Giants: Adding Tencent Hunyuan & ByteDance Doubao to AI University (74 Providers) On the Vibe Coders and Their Lies clerk: Auto-Summarize Your Claude Code Sessions AI Weekly — 2026/04/10–04/17 | The Model Lockdown Is Here, but the Toolchain Is the Real Battleground AI 週報 — 2026/04/10–2026/04/17 模型封鎖潮來了,但工具鏈才是真戰場 Maybe this is how Open-Source apps are born... 🚀 Fine-Tune LLMs with LoRA and QLoRA: 2026 Guide tRPC v11 + Next.js App Router: End-to-End Type Safety Without the Boilerplate ShadCN UI in 2026: Why I Stopped Installing Component Libraries and Started Owning My Components SaaS Billing in React Server Components: Stripe + Supabase Without a Single `useEffect` Join our DEV Weekend Challenge — $1,000 in Prizes Across TEN winners! Submissions Due April 20 at 6:59 AM UTC. Implementing FSRS Spaced Repetition in Flutter + Supabase — Adding Memory Science to an AI Learning App "I Texted My Localhost From the Train — Claude Code Fixed the Bug Before I Got Home" I Built a Sales Prep AI and It Went Deeper Than Expected Design to Code #2: One JSON, Eleven Outputs Solving the 100M-Row Problem: A Summary Table Pattern for High-Volume Push Notification Logs Flutter Web With Wasm: What Actually Changes For Developers I Built 50 Royalty-Free Soundtracks for My Side Project in a Weekend Using AI Music Generation The Vibe Coding Security Checklist: 7 Things to Check Before You Ship Stop Letting Googlebot Guess Fix Your React App's SEO Right Desconstruindo o Streaming do LinkedIn: Como Criar um Engine de Extração de Vídeo de Alta Performance com HLS e FFmpeg (EDA Part-1) EDA (Exploratory Data Analysis) Explained With Real Life — Why Looking at Your Data Is the Most Important Step in Machine Learning Brand Relationship Management at Scale: Our 4-Touch Outreach System for 200+ Brands Why String.fromEnvironment() Might Return an Empty String in Dart JGuardrails 1.0.0 — Hardening Java LLM Apps Against Jailbreaks, Toxicity, and Prompt Injection Plan and Schedule a Full Week of Threads Content From One Claude Conversation Coding Cat Oran Ep3, Five Tables Changed Everything Updated: BFF Pattern I'm done watching freelancers get buried by 200 proposals. So I'm building the alternative. This is my first post BFS Algorithm in Java Step by Step Tutorial with Examples Tracking LLM Pricing Monthly: An Open Dataset for 22 AI Models How We Measure Content ROI on a Comparison Site: Revenue Attribution Without Perfect Data Introducing Nova AI Ops: The AI-Native Operating System for SRE Teams I built a free desktop video downloader for Windows — Grabbit How Talkie OCR Helps Vision-Impaired & Dyslexic Users Read the World Around Them VRCFaceTracking安装和iPhone面捕配置教程,有bug Even CrowdStrike Can't See Your Agents The Automation Gold Rush: What n8n Workflows and Claude Are Opening Up for Developers Right Now
How to Build an OSINT-Powered B2B Prospecting Workflow in 2026 (Without Getting Banned)
Zackrag · 2026-04-23 · via DEV Community

Last year I ran the same LinkedIn Sales Navigator export through three enrichment APIs. Apollo matched 61% of the emails. Hunter.io matched 54%. An OSINT-first pipeline I'd built in n8n — pulling from public sources before hitting any paid API — matched 79% and cost roughly $0.003 per contact. The delta wasn't magic. It was sequence.

Security researchers have been building layered intelligence workflows for years. Sales teams mostly buy a database subscription and call it done. In 2026, that gap is expensive.

Why Database-First Prospecting Leaves Money on the Table

Most SDR stacks start with a contact database — ZoomInfo, Apollo, or Lusha — and treat enrichment as a one-time step at the top of the funnel. The problem: these databases are 3–18 months stale on average. Job titles change. Companies restructure. Decision-makers who were Director of Engineering in Q1 are VP by Q3.

I scraped 500 LinkedIn profiles in February 2025 and cross-referenced them against Apollo's database three months later. 22% of the contacts had a title or company change that Apollo hadn't caught. That's roughly 1 in 5 outreach sequences targeting the wrong person.

The OSINT approach inverts this. Instead of pulling a static list and enriching it once, you monitor public signals continuously and trigger enrichment only when something changes.

The Three-Layer Signal Stack

A functional OSINT prospecting workflow has three distinct layers:

Layer 1 — Discovery: Find who to target using public signals — job postings, press releases, funding announcements, GitHub activity, conference speaker listings.

Layer 2 — Enrichment: Get verified contact data for those targets using a cascade of tools, free first, paid only when the free tier misses.

Layer 3 — Trigger: Detect when something changes about a target (job change, new funding, tech stack shift) and fire a sequence automatically.

Each layer feeds the next. Discovery without triggers is just a list. Triggers without enrichment are just noise.

Free OSINT Sources That Actually Surface Decision-Maker Signals

Most guides skip this part. Here's what I've actually used:

Phonebook.cz indexes email addresses, domains, and URLs from breach data dumps. Not for emailing those addresses — that's a fast path to a spam complaint — but for pattern recognition. If you see that a company's email format is firstname.lastname@domain.com across 40 different employees in the dataset, you don't need to pay to discover that pattern.

Maltego is the de facto graph visualization tool in the security world. The Community Edition is genuinely free and handles most research tasks. The most useful transforms for sales: domain ownership, corporate structure linking, and subsidiary mapping. I've used it to find that a target prospect's legal entity is three shell companies deep from the brand I actually wanted to reach — which explained why every enrichment API was returning wrong contacts.

Maigret runs a username across 3,000+ sites and returns every platform where that person has an account. I've fed it into enrichment workflows to correlate a LinkedIn profile with a GitHub account, which often exposes a work email in that GitHub profile's public commit history — completely free.

Google dorks remain underused. site:linkedin.com/in "VP of Engineering" "company.com" combined with cached page lookups has surfaced more accurate contact data for me than RocketReach on several niche ICPs. Slow to automate safely, but zero cost.

None of these replace paid enrichment. They reduce how often you need it.

Chaining Enrichment + Job-Change Triggers in n8n

Here's the workflow I've been running since Q4 2025:

Step 1: An RSS/webhook monitor watches for trigger signals — job changes via LinkedIn's public activity feed, funding rounds via Crunchbase's free tier, hiring signals via target companies' careers pages.

Step 2: n8n catches the trigger and runs a free enrichment pass first. This includes Phonebook.cz domain pattern lookup, GitHub email extraction via the public commit API, and email format guessing based on any already-known contacts at the same domain.

Step 3: If Step 2 returns a verified email (confidence score ≥ 0.8 based on pattern match frequency), skip paid enrichment entirely. Otherwise, cascade: Hunter.io free tier (25 searches/month) → Snov.io (50 credits/month free) → Apollo API as the paid fallback.

Step 4: Validated address goes into a 3-touch sequence. The first message references the trigger signal: "I saw you just joined [Company] as VP of Sales — curious if you're rebuilding the stack."

The implementation detail most guides miss is deduplication. LinkedIn sometimes fires duplicate job-change signals for the same person. Without an idempotency check before enrichment, you'll send the same sequence twice and burn the relationship. In n8n this is a single "check if contact ID exists in Supabase/Airtable, skip if true" node before any enrichment call.

Make.com is a valid alternative to n8n. Make's pre-built modules for Apollo, Hunter.io, and Phantombuster are more polished out of the box. n8n's self-hosted version is cheaper at scale and supports arbitrary HTTP calls without needing a module — useful for OSINT APIs that don't have official integrations built yet.

Rate Limits That Actually Matter

This is what gets accounts flagged, and most guides are deliberately vague. Here's what I've measured:

Source Safe sustained rate What actually triggers detection
LinkedIn (browser session) ~80 profile views/day >150/day, or identical query pattern at same time daily
Hunter.io free API 25 req/day hard cap N/A — hits wall, no ban
Apollo API 200 req/min documented Undocumented: repeated identical queries < 5 seconds apart
Phantombuster LinkedIn agent 30 profiles/run, 2 runs/day > 4 runs/day triggers LinkedIn rate-limit flag
Google dork (unauthenticated) ~80–100 queries/hour CAPTCHAs start around 50 rapid-fire queries
GitHub commit email API 5,000 req/hr with token Easy to stay under; 60/hr unauthenticated

The LinkedIn numbers are the ones that bite people. LinkedIn's detection appears to weight pattern regularity more than raw volume. Hitting exactly 100 profiles at 9:01am every day is riskier than hitting 120 profiles at scattered times. Randomized delays between 40–120 seconds and varied session lengths matter more than staying under a specific daily cap.

Clay abstracts most of this away if you're doing waterfall enrichment at volume — it handles the cascade across Apollo, Hunter.io, Lusha, and others with managed rate limits. Worth it if you'd rather pay for that abstraction than maintain your own n8n logic.

The Legal Line (It's Thinner Than You Think)

OSINT for sales sits in a gray zone that got narrower after GDPR enforcement actions in 2024 and 2025.

The rule I follow: publicly visible ≠ freely processable. Just because a person's work email appears in a Phonebook.cz index doesn't give you a legitimate interest basis to add them to a cold email sequence under GDPR Article 6(1)(f). Legitimate interest requires a documented balancing test that most SDR teams have never performed.

Practically: avoid scraping personal email addresses (anything not on a company domain). Automating outreach to personal Gmail or Yahoo addresses sourced from OSINT databases is the fastest path to a spam complaint that terminates your sending domain.

For US targets, CAN-SPAM is more permissive — you need opt-out compliance, accurate sender headers, and non-deceptive subject lines. That said, your ESP's Terms of Service are typically stricter than CAN-SPAM, and your deliverability reputation matters more than the legal floor.

OSINT vs. Database-First: What the Numbers Actually Look Like

Approach Coverage at 1k contacts Est. cost per verified contact Data freshness Setup effort
ZoomInfo database-first 85%+ for US enterprise $0.50–$2.00 3–18 months Low
Apollo database-first 70–80% $0.10–$0.30 2–12 months Low
Free OSINT cascade only 35–55% ~$0.001 Near real-time High
Hybrid OSINT + paid fallback 75–82% $0.02–$0.08 Near real-time Medium
Clay waterfall 80–88% $0.05–$0.15 1–6 months Medium

The hybrid column is where the real ROI is. The difference between 75% and 85% coverage sounds marginal, but at 1,000 contacts that's 100 additional valid email addresses — which at a typical 3% reply rate is 3 extra meetings from the same list.

What I Actually Use

For most workflows: Maltego Community Edition for account-structure mapping → n8n for trigger orchestration and deduplication → Hunter.io free tier first → Snov.io second → Apollo API as the paid fallback. Clay is genuinely good if you're running this at scale and don't want to maintain your own waterfall logic.

For Twitter/X and Facebook profile-based lookups specifically — when I'm trying to tie a social presence back to a work email — Ziwa has been faster for me than PDL's direct API and cheaper than Clearbit for that specific use case. Worth testing if your ICPs are active on those platforms.

The honest conclusion: there's no single tool that wins every category. The OSINT layer isn't a replacement for paid enrichment — it's what makes paid enrichment 4–10x cheaper by narrowing when you actually need it.