🧩 我打造了一个隐私优先的 Chrome 扩展,用于从 LinkedIn 收集公开邮箱
发布: (2026年1月17日 GMT+8 19:37)
4 min read
原文: Dev.to
Source: Dev.to
在找工作和进行外联时,我一直遇到同样的问题:
很多 LinkedIn 帖子和个人资料已经把电子邮件地址直接展示出来了,但要找到它们既慢又重复。你要滚动页面,点击“查看更多”,复制一个邮箱,再继续滚动……如此循环。
我尝试过一些声称可以解决这个问题的工具,但它们大多存在以下至少一种问题:
- 将数据发送到外部服务器
- 需要账号或登录
- 过度自动化,感觉不安全
- 明显无法通过 Chrome Web Store 审核
于是我决定自己动手做一个小工具。ReachIn 就这样诞生了。
👉 Repo:
ReachIn 是什么(以及不是什麼)
它的功能
- 仅在你明确点击按钮时工作
- 滚动 LinkedIn 搜索结果页面
- 展开可见内容
- 提取页面上已经显示的电子邮件地址
- 将所有数据本地存储在浏览器中
- 让你复制结果或查看历史收集记录
它 不 做的事
- 不进行后台抓取
- 不访问凭证信息
- 不进行分析或追踪
- 不使用服务器
- 不调用远程 API
- 不自行运行自动化
从第一天起的隐私保护
Chrome 审核员更关注意图和数据处理方式,而不是华丽的功能。
我一开始就设定了几条不可妥协的规则:
- 所有操作都在本地运行
- 不发起网络请求
- 一切都由用户操作触发
- 行为可以用简洁的英文解释清楚
内部实现(高层概览)
ReachIn 是一个普通的 Manifest V3 Chrome 扩展。没有使用框架,也没有构建步骤。
目录结构如下:
├── assets/
│ ├── css/
│ │ └── popup.css
│ ├── js/
│ │ ├── background.js
│ │ ├── content.js
│ │ └── popup.js
│ ├── icons/
│ │ ├── icon-16.png
│ │ ├── icon-32.png
│ │ ├── icon-48.png
│ │ └── icon-128.png
│
├── popup.html
├── manifest.json
│
├── README.md
├── PRIVACY.md
├── LICENSE
└── .gitignore
工作流程很简单:
- 弹出窗口控制所有操作。
- 内容脚本仅在
linkedin.com上运行。 - 脚本只在用户操作后注入。
- 数据使用
chrome.storage.local存储。
内容脚本
内容脚本完成三件事:
- 滚动页面
- 在需要时点击“查看更多”
- 从可见文本和
mailto:链接中提取邮箱
仅此而已。
- 不会在展开内容之外修改 DOM。
- 不进行隐藏抓取。
- 不在后台执行。
接下来的计划
我的路线图保持有意的保守:
- 小幅 UX 改进
- 性能调优
- 可选的导出格式
如果你感兴趣,欢迎查看仓库:
👉
祝开发愉快。