[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-82996":3},{"id":4,"name":5,"fullName":6,"owner":7,"repo":5,"description":8,"homepage":9,"htmlUrl":10,"language":11,"languages":10,"totalLinesOfCode":10,"stars":12,"forks":13,"watchers":14,"openIssues":14,"contributorsCount":15,"subscribersCount":15,"size":15,"stars1d":15,"stars7d":16,"stars30d":17,"stars90d":15,"forks30d":15,"starsTrendScore":18,"compositeScore":19,"rankGlobal":10,"rankLanguage":10,"license":10,"archived":20,"fork":20,"defaultBranch":21,"hasWiki":22,"hasPages":20,"topics":23,"createdAt":10,"pushedAt":10,"updatedAt":31,"readmeContent":32,"aiSummary":33,"trendingCount":15,"starSnapshotCount":15,"syncStatus":14,"lastSyncTime":34,"discoverSource":35},82996,"deanonymizer","ni5arga\u002Fdeanonymizer","ni5arga","Deanonymize anyone based on their public commenting or posting history & pattern.","",null,"TypeScript",266,87,2,0,29,105,5,5.83,false,"main",true,[24,25,26,27,28,29,30],"cli","deanonymization","hackernews","osint","osint-tool","reddit","typescript","2026-06-12 02:04:30","# deanonymizer\n\ndeanonymizer is a command-line system for defensive OSINT exposure\nmeasurement. It estimates re-identification risk from public Reddit and Hacker\nNews corpora by aggregating weak signals, scoring identity hypotheses, and\nemitting evidence-linked remediation guidance.\n\n## Research basis\n\nThe design follows the inference setting discussed in:\n\n- [arXiv:2602.16800](https:\u002F\u002Farxiv.org\u002Fabs\u002F2602.16800)\n\nOperational premise: low-entropy disclosures that appear non-identifying in\nisolation may become identifying under cross-post and cross-platform fusion.\n\n## Formal objective\n\nGiven a subject handle set H and public artifact set D, produce a risk report R\ncontaining:\n\n- identity-relevant feature extractions\n- evidence-backed linkage claims\n- calibrated confidence labels\n- prioritized mitigation actions\n\n## Threat model\n\n- Observer model: passive adversary with access to publicly available text and\n  metadata only\n- Data boundary: no private APIs, credentialed access, or hidden datasets\n- Attack primitive: probabilistic entity linkage via feature composition\n- Security goal: minimize attributable identity surface from public traces\n\n## Pipeline\n\n1. Acquisition\n   - Reddit artifacts from [Arctic Shift API](https:\u002F\u002Farctic-shift.photon-reddit.com)\n   - Hacker News artifacts from [HN Algolia Search API](https:\u002F\u002Fhn.algolia.com\u002Fapi)\n2. Canonicalization\n   - Heterogeneous source records mapped into a unified item schema\n   - Temporal and textual normalization for bounded-context inference\n3. Feature extraction and attribution\n   - Detection of location, affiliation, temporal routine, self-disclosed\n     demographics, cross-platform handles, external URLs, and stylometric cues\n   - Attribution binding from claim to quote-level evidence and permalink\n4. Risk synthesis\n   - Confidence-calibrated findings: low, medium, high\n   - Explicit exact-user section and public proof URL set\n   - Finding-level remediation recommendations\n\n## Output properties\n\n- Human-readable report with ranked findings and rationale\n- JSON serialization for longitudinal tracking and downstream analytics\n- Optional strict validation: fail if no external proof URL exists beyond\n  audited platform profile endpoints\n\n## Installation\n\n```bash\nnpm install\n```\n\n### LLM backend\n\nThe analysis stage runs on either of two interchangeable backends, selected\nautomatically from the environment (override with `--provider`):\n\n**Anthropic (native, default when only this key is set)**\n\n```bash\nexport ANTHROPIC_API_KEY=sk-ant-...\n# default model is the fast claude-haiku-4-5\n# optional: export ANTHROPIC_MODEL=claude-sonnet-4-6  # slower, higher quality\n```\n\n**Any OpenAI-compatible endpoint** — OpenAI, Google Gemini, Ollama, Groq,\nTogether, etc. Point `OPENAI_BASE_URL` at the provider's Chat Completions\nsurface:\n\n```bash\n# OpenAI\nexport OPENAI_API_KEY=sk-...\nexport OPENAI_MODEL=gpt-4o-mini\n\n# Google Gemini (OpenAI-compatible endpoint)\nexport OPENAI_API_KEY=...your-gemini-key...\nexport OPENAI_BASE_URL=https:\u002F\u002Fgenerativelanguage.googleapis.com\u002Fv1beta\u002Fopenai\u002F\nexport OPENAI_MODEL=gemini-2.0-flash\n\n# Ollama (local, no key required)\nexport OPENAI_BASE_URL=http:\u002F\u002Flocalhost:11434\u002Fv1\nexport OPENAI_MODEL=llama3\n```\n\nSelection order: `--provider` flag → `LLM_PROVIDER` env → auto-detect\n(`OPENAI_*` \u002F `--base-url` → openai; `ANTHROPIC_API_KEY` → anthropic). Existing\nAnthropic-only setups keep working unchanged. Native Anthropic prompt caching is\npreserved on the Anthropic path; the OpenAI path requests\n`response_format: json_object` where supported and still runs the JSON-repair\nfallback for endpoints that ignore it.\n\n## Usage\n\n```bash\n# Reddit only\nnpm run audit -- my_reddit_handle\n\n# Reddit + Hacker News\nnpm run audit -- my_reddit_handle --hn my_hn_handle\n\n# Hacker News only\nnpm run audit -- --hn my_hn_handle\n\n# JSON output\nnpm run audit -- my_reddit_handle --json -o report.json\n\n# Strict proof validation\nnpm run audit -- my_reddit_handle --require-external-proof\n\n# Faster wall-clock analysis (parallel chunk workers)\nnpm run audit -- my_reddit_handle --concurrency 3\n\n# Run against a local Ollama model\nnpm run audit -- my_reddit_handle --base-url http:\u002F\u002Flocalhost:11434\u002Fv1 --model llama3\n\n# Force a specific provider\u002Fmodel for one run\nnpm run audit -- my_reddit_handle --provider openai --model gpt-4o-mini\n```\n\n## CLI options\n\n| Flag | Default | Description |\n|------|---------|-------------|\n| [reddit-username] \u002F --reddit | none | Reddit user to audit (accepts u\u002Fname) |\n| --hn \u003Cusername> | none | Hacker News user to audit |\n| -n, --max \u003Cn> | 300 | Maximum items fetched per platform |\n| --max-chars \u003Cn> | 120000 | Maximum analysis transcript budget |\n| --concurrency \u003Cn> | all (≤8) | Number of chunk workers processed in parallel |\n| --provider \u003Cname> | auto-detect | LLM provider: `anthropic` or `openai` |\n| --base-url \u003Curl> | none | OpenAI-compatible base URL (Gemini\u002FOllama\u002FGroq\u002F…); implies `openai` |\n| --model \u003Cname> | provider default | Override the model name |\n| --json | false | Emit JSON instead of text report |\n| --require-external-proof | false | Fail if no proof URL exists beyond audited profile pages |\n| -o, --out \u003Cfile> | stdout | Write output to file |\n| --i-am-authorized | false | Skip interactive authorization prompt for scripted runs |\n\n## Reproducibility and calibration\n\n- Increase -n to expand retrieval depth\n- Increase --max-chars to reduce context truncation\n- Pin the model (ANTHROPIC_MODEL \u002F OPENAI_MODEL \u002F --model) to control inference backend variance\n- Store JSON outputs for temporal diff and regression analysis\n\n## Build\n\n```bash\nnpm run build\n```\n\n## Limitations\n\n- Findings are probabilistic and should not be interpreted as identity proof\n- Recall is upper-bounded by source completeness and truncation constraints\n- Stylometric separability is population- and domain-dependent\n- Confidence calibration depends on evidence density and artifact quality\n","deanonymizer 是一个基于命令行的系统，用于评估个人因公开评论或发帖历史及模式而被重新识别的风险。它通过收集弱信号、评分身份假设并提供证据链接的修复建议来估计来自Reddit和Hacker News公共语料库中的重识别风险。该项目使用TypeScript开发，并且支持Anthropic和OpenAI兼容端点作为分析后端。适用于需要评估个人信息暴露风险以及采取相应保护措施的安全研究和个人隐私保护场景。","2026-06-11 04:09:49","CREATED_QUERY"]