Scan Report
20 /100
alphapai-scraper
AlphaPai financial comment scraper and archival search tool
A legitimate, functional web scraping and archival skill for AlphaPai financial platform with minor documentation gaps but no malicious behavior detected.
Safe to install
The skill is safe to use. Consider pinning dependency versions in setup.sh and documenting subprocess usage for osascript and openclaw agent calls in SKILL.md for full transparency.
Findings 3 items
| Severity | Finding | Location |
|---|---|---|
| Low | Undeclared subprocess execution Doc Mismatch | scripts/run.py:43 |
| Low | Unpinned playwright dependency Supply Chain | setup.sh:15 |
| Low | Chrome profile directory access undeclared Sensitive Access | config/settings.example.json:19 |
| Resource | Declared | Inferred | Status | Evidence |
|---|---|---|---|---|
| Filesystem | WRITE | WRITE | ✓ Aligned | SKILL.md declares data storage; archive_store.py writes SQLite, raw, normalized … |
| Network | READ | WRITE | ✓ Aligned | SKILL.md declares AlphaPai scraping; send_feishu.py POSTs to Feishu webhook (dec… |
| Shell | NONE | WRITE | ✓ Aligned | run.py:43 osascript subprocess; analyze.py:112 openclaw agent subprocess; publis… |
| Environment | READ | READ | ✓ Aligned | common.py:95-106 reads ALPHAPAI_* env vars; load_auth_bundle reads USER_AUTH_TOK… |
| Skill Invoke | NONE | WRITE | ✓ Aligned | analyze.py:112 invokes 'openclaw agent --message' as subprocess |
| Clipboard | NONE | NONE | — | |
| Browser | READ | WRITE | ✓ Aligned | SKILL.md declares browser-based scraping; scraper.py uses Playwright with WRITE … |
| Database | WRITE | WRITE | ✓ Aligned | archive_store.py creates SQLite (FTS5) and Chroma vector index |
3 findings
Medium External URL 外部 URL
https://alphapai-web.rabyte.cn config/settings.example.json:3 Medium External URL 外部 URL
https://alphapai-web.rabyte.cn/login config/settings.example.json:4 Medium External URL 外部 URL
https://alphapai-web.rabyte.cn/reading/home/comment config/settings.example.json:5 File Tree
19 files · 109.3 KB · 3476 lines Python 11f · 2929L
Markdown 2f · 385L
Shell 1f · 91L
JSON 4f · 64L
YAML 1f · 7L
├─
▾
agents
│ └─
openai.yaml
YAML
├─
▾
config
│ ├─
cookies.example.json
JSON
│ ├─
credentials.example.json
⚠
JSON
│ ├─
settings.example.json
JSON
│ └─
token.example.json
⚠
JSON
├─
▾
scripts
│ ├─
analyze.py
Python
│ ├─
archive_store.py
Python
│ ├─
bootstrap_session.py
Python
│ ├─
common.py
Python
│ ├─
init_config.py
Python
│ ├─
package_skill.py
Python
│ ├─
publish_skill.py
Python
│ ├─
query_comments.py
Python
│ ├─
run.py
Python
│ ├─
scraper.py
Python
│ └─
send_feishu.py
Python
├─
README.md
Markdown
├─
setup.sh
Shell
└─
SKILL.md
Markdown
Dependencies 4 items
| Package | Version | Source | Known Vulns | Notes |
|---|---|---|---|---|
playwright | * | pip | No | Version not pinned in setup.sh |
chromadb | * | pip | No | Version not pinned; used for local vector search |
sentence-transformers | * | pip | No | Version not pinned; loads bge-small-zh-v1.5 model locally |
openclaw | CLI | system | No | Called via subprocess for AI summarization |
Security Positives
✓ No evidence of credential exfiltration — tokens and cookies stay local to configured storage paths
✓ No obfuscation, base64 payloads, or anti-analysis techniques detected
✓ No network requests to IP addresses or suspicious domains beyond the declared AlphaPai platform and Feishu webhook
✓ package_skill.py correctly excludes all credential files before publishing (token, cookies, credentials, settings local files)
✓ Credential handling follows a clear, documented priority chain with no surprise collection
✓ No reverse shell, C2 communication, or data theft patterns found
✓ Code is clean, readable, and well-structured with no hidden functionality
✓ Normalize_cookies() in common.py filters cookie keys to a safe allowlist (name, value, domain, etc.)