低风险 — 风险评分 15/100
上次扫描:4 小时前 重新扫描
15 /100
scry
跨 26+ 平台研究工具:Reddit, X, YouTube, GitHub, HN, Bluesky 等
合法的多源研究聚合工具,代码与声明基本一致,仅存在轻微文档-行为差异(读取备用配置文件路径)
技能名称scry
分析耗时72.7s
引擎pi
ClawHub Scry v0.1.0 by vihangd
📥 179
ClawHub 判定 可疑 env_credential_accesspotential_exfiltrationvt_suspicious
可以安装
可安全使用。建议补充 requirements.txt 记录 Python 依赖,完善 SKILL.md 声明备用配置路径访问。

安全发现 3 项

严重性 安全发现 位置
低危
未声明备用配置文件路径访问 文档欺骗
SKILL.md 仅声明访问 ~/.config/scry/.env,但 scripts/lib/env.py:15 同时尝试读取 ~/.config/last30days/.env
os.path.expanduser("~/.config/last30days/.env"),  // Compatibility
→ 在 SKILL.md 的 Security 章节补充说明兼容模式读取 last30days 配置
scripts/lib/env.py:15
低危
缺少依赖清单 供应链
无 requirements.txt 或 package.json 记录第三方依赖版本
仅依赖 urllib.request (stdlib) 和 @steipete/sweet-cookie
→ 添加 requirements.txt 和 package.json 锁定依赖版本
.
提示
硬编码 IP 用于 User-Agent 敏感访问
vendor/bird-search 中存在 129.0.0.0 和 131.0.0.0 硬编码 IP,实为 Chrome 版本号(129.0.0.0 Safari/537.36),用于伪装浏览器请求
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/129.0.0.0 Safari/537.36'
→ 无实际风险,这是常见的 Web 爬虫 UA 伪装技术
vendor/bird-search/lib/runtime-query-ids.js:37
资源类型声明权限推断权限状态证据
文件系统 WRITE WRITE ✓ 一致 scripts/scry.py:244-246 写入 ~/.cache/scry/
网络访问 READ READ ✓ 一致 仅访问 26+ 公共 API 端点
命令执行 WRITE WRITE ✓ 一致 scripts/lib/sources/github.py:61 调用 gh CLI
环境变量 NONE READ ✓ 一致 scripts/lib/env.py:30-36 读取 API 密钥
2 高危 59 项发现
📡
高危 IP 地址 硬编码 IP 地址
129.0.0.0
vendor/bird-search/lib/runtime-query-ids.js:37
📡
高危 IP 地址 硬编码 IP 地址
131.0.0.0
vendor/bird-search/lib/twitter-client-base.js:24
🔗
中危 外部 URL 外部 URL
https://arxiv.org/abs/...
SKILL.md:125
🔗
中危 外部 URL 外部 URL
https://www.reddit.com
scripts/lib/http.py:124
🔗
中危 外部 URL 外部 URL
http://www.w3.org/2005/Atom
scripts/lib/sources/arxiv.py:11
🔗
中危 外部 URL 外部 URL
http://export.arxiv.org/api/query
scripts/lib/sources/arxiv.py:37
🔗
中危 外部 URL 外部 URL
https://api.semanticscholar.org/graph/v1/paper/arXiv:
scripts/lib/sources/arxiv.py:137
🔗
中危 外部 URL 外部 URL
https://api.bsky.app/xrpc/app.bsky.feed.searchPosts
scripts/lib/sources/bluesky.py:31
🔗
中危 外部 URL 外部 URL
https://bsky.app/profile/
scripts/lib/sources/bluesky.py:71
🔗
中危 外部 URL 外部 URL
https://api.coingecko.com/api/v3/search?query=
scripts/lib/sources/coingecko.py:31
🔗
中危 外部 URL 外部 URL
https://www.coingecko.com/en/coins/
scripts/lib/sources/coingecko.py:56
🔗
中危 外部 URL 外部 URL
https://api.coingecko.com/api/v3/coins/
scripts/lib/sources/coingecko.py:60
🔗
中危 外部 URL 外部 URL
https://dev.to/api/articles?per_page=
scripts/lib/sources/devto.py:79
🔗
中危 外部 URL 外部 URL
https://api.gdeltproject.org/api/v2/doc/doc
scripts/lib/sources/gdelt.py:32
🔗
中危 外部 URL 外部 URL
https://gitlab.com/api/v4/projects
scripts/lib/sources/gitlab.py:32
🔗
中危 外部 URL 外部 URL
https://news.google.com/rss/search
scripts/lib/sources/google_news.py:60
🔗
中危 外部 URL 外部 URL
https://hn.algolia.com/api/v1/search
scripts/lib/sources/hackernews.py:35
🔗
中危 外部 URL 外部 URL
https://news.ycombinator.com/item?id=
scripts/lib/sources/hackernews.py:54
🔗
中危 外部 URL 外部 URL
https://hn.algolia.com/api/v1/items/
scripts/lib/sources/hackernews.py:91
🔗
中危 外部 URL 外部 URL
https://huggingface.co/api/models
scripts/lib/sources/huggingface.py:34
🔗
中危 外部 URL 外部 URL
https://huggingface.co/
scripts/lib/sources/huggingface.py:52
🔗
中危 外部 URL 外部 URL
https://huggingface.co/api/spaces
scripts/lib/sources/huggingface.py:87
🔗
中危 外部 URL 外部 URL
https://huggingface.co/spaces/
scripts/lib/sources/huggingface.py:105
🔗
中危 外部 URL 外部 URL
https://api.scrapecreators.com/v1/instagram/reels/search
scripts/lib/sources/instagram.py:30
🔗
中危 外部 URL 外部 URL
https://lobste.rs/hottest.json
scripts/lib/sources/lobsters.py:34
🔗
中危 外部 URL 外部 URL
https://lobste.rs/newest.json
scripts/lib/sources/lobsters.py:34
🔗
中危 外部 URL 外部 URL
https://mastodon.social/api/v1/timelines/tag/
scripts/lib/sources/mastodon.py:42
🔗
中危 外部 URL 外部 URL
https://api.openalex.org/works
scripts/lib/sources/openalex.py:31
🔗
中危 外部 URL 外部 URL
https://doi.org/
scripts/lib/sources/openalex.py:55
🔗
中危 外部 URL 外部 URL
https://openalex.org/works/
scripts/lib/sources/openalex.py:58
🔗
中危 外部 URL 外部 URL
https://gamma-api.polymarket.com/public-search
scripts/lib/sources/polymarket.py:32
🔗
中危 外部 URL 外部 URL
https://polymarket.com/event/
scripts/lib/sources/polymarket.py:56
🔗
中危 外部 URL 外部 URL
https://api.producthunt.com/v2/api/graphql
scripts/lib/sources/product_hunt.py:48
🔗
中危 外部 URL 外部 URL
https://www.reddit.com/search/.json
scripts/lib/sources/reddit.py:31
🔗
中危 外部 URL 外部 URL
https://efts.sec.gov/LATEST/search-index
scripts/lib/sources/sec_edgar.py:31
🔗
中危 外部 URL 外部 URL
https://www.sec.gov/Archives/edgar/data/
scripts/lib/sources/sec_edgar.py:81
🔗
中危 外部 URL 外部 URL
https://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&company=
scripts/lib/sources/sec_edgar.py:83
🔗
中危 外部 URL 外部 URL
https://api.semanticscholar.org/graph/v1/paper/search
scripts/lib/sources/semantic_scholar.py:31
🔗
中危 外部 URL 外部 URL
https://www.semanticscholar.org/paper/
scripts/lib/sources/semantic_scholar.py:56
🔗
中危 外部 URL 外部 URL
https://api.stackexchange.com/2.3/search/advanced
scripts/lib/sources/stackoverflow.py:31
🔗
中危 外部 URL 外部 URL
https://substack.com/api/v1/post/search
scripts/lib/sources/substack.py:31
🔗
中危 外部 URL 外部 URL
https://www.techmeme.com/feed.xml
scripts/lib/sources/techmeme.py:34
🔗
中危 外部 URL 外部 URL
https://api.scrapecreators.com/v1/tiktok/search/keyword
scripts/lib/sources/tiktok.py:30
🔗
中危 外部 URL 外部 URL
https://www.tiktok.com/video/
scripts/lib/sources/tiktok.py:58
🔗
中危 外部 URL 外部 URL
https://en.wikipedia.org/w/api.php
scripts/lib/sources/wikipedia.py:33
🔗
中危 外部 URL 外部 URL
https://en.wikipedia.org/wiki/
scripts/lib/sources/wikipedia.py:59
🔗
中危 外部 URL 外部 URL
https://api.x.ai/v1/responses
scripts/lib/sources/x_twitter.py:28
🔗
中危 外部 URL 外部 URL
https://x.com/user/status/...
scripts/lib/sources/x_twitter.py:51
🔗
中危 外部 URL 外部 URL
https://www.youtube.com/watch?v=
scripts/lib/sources/youtube.py:72
🔗
中危 外部 URL 外部 URL
https://twitter.com/
vendor/bird-search/lib/cookies.js:8
🔗
中危 外部 URL 外部 URL
https://x.com/?lang=en
vendor/bird-search/lib/runtime-query-ids.js:7
🔗
中危 外部 URL 外部 URL
https://x.com/explore
vendor/bird-search/lib/runtime-query-ids.js:8
🔗
中危 外部 URL 外部 URL
https://x.com/notifications
vendor/bird-search/lib/runtime-query-ids.js:9
🔗
中危 外部 URL 外部 URL
https://x.com/settings/profile
vendor/bird-search/lib/runtime-query-ids.js:10
🔗
中危 外部 URL 外部 URL
https://x.com/i/api/graphql
vendor/bird-search/lib/twitter-client-constants.js:3
🔗
中危 外部 URL 外部 URL
https://upload.twitter.com/i/media/upload.json
vendor/bird-search/lib/twitter-client-constants.js:5
🔗
中危 外部 URL 外部 URL
https://x.com/i/api/1.1/media/metadata/create.json
vendor/bird-search/lib/twitter-client-constants.js:6
🔗
中危 外部 URL 外部 URL
https://x.com/i/api/1.1/statuses/update.json
vendor/bird-search/lib/twitter-client-constants.js:7
🔗
中危 外部 URL 外部 URL
https://x.com/i/status/$
vendor/bird-search/lib/twitter-client-utils.js:213

目录结构

61 文件 · 272.7 KB · 8043 行
Python 45f · 5564L JavaScript 11f · 1945L Markdown 2f · 484L JSON 3f · 50L
├─ 📁 scripts
│ ├─ 📁 lib
│ │ ├─ 📁 sources
│ │ │ ├─ 🐍 __init__.py Python 1L · 22 B
│ │ │ ├─ 🐍 arxiv.py Python 150L · 4.9 KB
│ │ │ ├─ 🐍 bluesky.py Python 115L · 3.4 KB
│ │ │ ├─ 🐍 coingecko.py Python 141L · 4.7 KB
│ │ │ ├─ 🐍 devto.py Python 132L · 3.7 KB
│ │ │ ├─ 🐍 gdelt.py Python 89L · 2.6 KB
│ │ │ ├─ 🐍 github.py Python 238L · 8.9 KB
│ │ │ ├─ 🐍 gitlab.py Python 88L · 2.6 KB
│ │ │ ├─ 🐍 google_news.py Python 121L · 3.3 KB
│ │ │ ├─ 🐍 hackernews.py Python 117L · 3.6 KB
│ │ │ ├─ 🐍 huggingface.py Python 142L · 4.7 KB
│ │ │ ├─ 🐍 instagram.py Python 90L · 3.1 KB
│ │ │ ├─ 🐍 lobsters.py Python 91L · 3.1 KB
│ │ │ ├─ 🐍 mastodon.py Python 96L · 3.1 KB
│ │ │ ├─ 🐍 openalex.py Python 128L · 4.2 KB
│ │ │ ├─ 🐍 polymarket.py Python 133L · 4.3 KB
│ │ │ ├─ 🐍 product_hunt.py Python 109L · 2.8 KB
│ │ │ ├─ 🐍 reddit.py Python 90L · 2.7 KB
│ │ │ ├─ 🐍 sec_edgar.py Python 107L · 3.5 KB
│ │ │ ├─ 🐍 semantic_scholar.py Python 88L · 2.7 KB
│ │ │ ├─ 🐍 stackoverflow.py Python 100L · 3.0 KB
│ │ │ ├─ 🐍 substack.py Python 91L · 2.8 KB
│ │ │ ├─ 🐍 techmeme.py Python 98L · 3.0 KB
│ │ │ ├─ 🐍 threads.py Python 35L · 1006 B
│ │ │ ├─ 🐍 tiktok.py Python 94L · 3.1 KB
│ │ │ ├─ 🐍 wikipedia.py Python 83L · 2.3 KB
│ │ │ ├─ 🐍 x_twitter.py Python 364L · 12.7 KB
│ │ │ └─ 🐍 youtube.py Python 241L · 7.5 KB
│ │ ├─ 🐍 __init__.py Python 1L · 21 B
│ │ ├─ 🐍 cache.py Python 48L · 1.4 KB
│ │ ├─ 🐍 conflict.py Python 95L · 3.2 KB
│ │ ├─ 🐍 dates.py Python 82L · 2.2 KB
│ │ ├─ 🐍 dedupe.py Python 115L · 3.8 KB
│ │ ├─ 🐍 domain.py Python 167L · 6.7 KB
│ │ ├─ 🐍 env.py Python 87L · 2.9 KB
│ │ ├─ 🐍 http.py Python 132L · 4.8 KB
│ │ ├─ 🐍 normalize.py Python 79L · 2.5 KB
│ │ ├─ 🐍 query.py Python 116L · 3.7 KB
│ │ ├─ 🐍 render.py Python 278L · 9.9 KB
│ │ ├─ 🐍 schema.py Python 158L · 5.1 KB
│ │ ├─ 🐍 score.py Python 154L · 4.9 KB
│ │ ├─ 🐍 source_base.py Python 68L · 1.8 KB
│ │ └─ 🐍 source_registry.py Python 125L · 4.4 KB
│ ├─ 🐍 benchmark.py Python 206L · 7.0 KB
│ └─ 🐍 scry.py Python 281L · 8.9 KB
├─ 📁 vendor
│ └─ 📁 bird-search
│ ├─ 📁 lib
│ │ ├─ 📜 cookies.js JavaScript 172L · 6.1 KB
│ │ ├─ 📋 features.json JSON 17L · 523 B
│ │ ├─ 📜 paginate-cursor.js JavaScript 36L · 1.2 KB
│ │ ├─ 📋 query-ids.json JSON 20L · 815 B
│ │ ├─ 📜 runtime-features.js JavaScript 150L · 4.9 KB
│ │ ├─ 📜 runtime-query-ids.js JavaScript 263L · 9.2 KB
│ │ ├─ 📜 twitter-client-base.js JavaScript 128L · 4.7 KB
│ │ ├─ 📜 twitter-client-constants.js JavaScript 49L · 2.5 KB
│ │ ├─ 📜 twitter-client-features.js JavaScript 346L · 18.0 KB
│ │ ├─ 📜 twitter-client-search.js JavaScript 156L · 7.1 KB
│ │ ├─ 📜 twitter-client-types.js JavaScript 1L · 59 B
│ │ └─ 📜 twitter-client-utils.js JavaScript 510L · 18.7 KB
│ ├─ 📜 bird-search.mjs JavaScript 134L · 3.7 KB
│ └─ 📋 package.json JSON 13L · 331 B
├─ 📝 README.md Markdown 266L · 7.1 KB
└─ 📝 SKILL.md Markdown 218L · 7.0 KB

依赖分析 2 项

包名版本来源已知漏洞备注
urllib stdlib python Python 标准库
@steipete/sweet-cookie unlocked npm 浏览器 Cookie 读取库,无版本锁定

安全亮点

✓ 使用标准库 urllib.request,无外部 HTTP 库风险
✓ Twitter 凭证仅用于读取搜索,不支持发帖/修改
✓ API 密钥不外传,仅传递给对应服务商
✓ 无 eval/exec/base64 解码等动态代码执行
✓ 无凭证收割模式(不遍历 os.environ 匹配敏感关键字)
✓ 缓存写入仅限 ~/.cache/scry/ 目录