Skip to content
forked from soxoj/sharetrace

About

🎭 Reveal the identity behind a share link

Resources

Stars

0 stars

Watchers

0 watching

Forks

Β 
Β 

Latest commit

Β 

History

13 Commits

Folders and files

NameName
Last commit message
Last commit date
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

ShareTrace

🎭 Reveal the identity behind a share link

A fork of soxoj/sharetrace with Google Docs and GitHub owner-email extraction added.


ShareTrace CLI capture



ForkΒ  Upstream soxoj/sharetraceΒ  16 sourcesΒ  No API keys

StarsΒ  ForksΒ  IssuesΒ  PRsΒ  Last CommitΒ  Repo SizeΒ  Contributors

Fork maintained by Hieu Ngo β€’ hieu.ngo@chongluadao.vn β€’ chongluadao.vn




🌟 What's new in this fork

All upstream functionality preserved. Additions over soxoj/sharetrace:

Addition Covers Notes
Google Docs source (gdoc) Docs, Sheets, Slides, Drawings, Forms, Drive files, Apps Script, Jamboard, My Maps Owner email + Google ID + creation/modification dates from the public Drive v2beta metadata endpoint. API key overridable via SHARETRACE_GDOC_API_KEY. Clean-room rewrite against the endpoint first documented by Malfrats/xeuledoc
GitHub source (github) Commit URLs, PR-commit URLs, profile URLs Commit: parses .patch mbox From: header with RFC 5322 parser (handles quoted display names). Profile: scans recent public PushEvents (last 90 days). users.noreply.github.com emails flagged via is_noreply
GitLab source (gitlab) Commit URLs (incl. nested groups), profile URLs Commit: .patch mbox From: header, same trick as GitHub. Profile: /api/v4/users β€” returns public_email only if user opted in (GitLab strips email from push events, unlike GitHub). gitlab.com only; self-hosted out of scope
Hugging Face source (huggingface) Profile URLs, repo URLs (owner resolved) Uses undocumented-but-stable /api/users/<name>/overview. Returns username, fullname, avatar, account type (user/org), follower count, orgs list. No email (HF treats emails as private)
LinkedIn source (linkedin) /in/, /posts/, /pulse/ URLs OG-tag scrape with realistic Chromium UA. Detects LinkedIn's bot protection (999/403/429 status, authwall keyword) and returns is_blocked: True. Hit rate ~80% on public profiles; dynamic and degrades over time
50+ new tests Router + gdoc + github + gitlab + huggingface + linkedin modules Mocked unit tests + live-verified against real public resources

πŸ’» Quick start

python -m sharetrace <url>

Advanced

# JSON output (scriptable)
python -m sharetrace <url> --json

# List all supported sources
python -m sharetrace --list

# Override the default Google Drive API key (if it gets revoked)
SHARETRACE_GDOC_API_KEY=<your-key> python -m sharetrace <drive-url>

βš™οΈ Installation

git clone https://github.com/7onez/sharetrace.git
cd sharetrace
pip install -r requirements.txt

πŸ“– Usage examples

# Google Docs / Sheets / Drive β€” extracts owner email + Google ID + dates
python -m sharetrace "https://docs.google.com/document/d/<id>/edit" --json

# GitHub commit β€” extracts committer name + email
python -m sharetrace "https://github.com/<user>/<repo>/commit/<sha>"

# GitHub profile β€” scans recent public PushEvents for emails
python -m sharetrace "https://github.com/<username>"

# TikTok share link β€” extracts sharer identity + device + share method
python -m sharetrace "https://vm.tiktok.com/<code>"

# ChatGPT share β€” extracts display name
python -m sharetrace "https://chatgpt.com/share/<uuid>"

πŸ”Ž Supported sources

Name Extracts Notes
TikTok User ID, Username, Nickname, Country, Avatar, Signature, Device, Share Method, Timestamp, Follower/Following/Video/Heart Counts, Private Account, DM Available Requires short share link (vm.tiktok.com / vt.tiktok.com)
Instagram Username, User ID, Display Name, Profile URL, Profile Pic Sharer data might expire within a few days; only fresh share links contain identity info
Discord User ID, Username, Display Name, Avatar, Creation Time Vanity invites may not contain inviter data
ChatGPT Display Name
Claude Display Name, User ID
Perplexity Username, Avatar, User ID
Microsoft Email From SharePoint/OneDrive personal links; no HTTP request needed
Pinterest Username, User ID, Display Name, Avatar, Profile URL Requires short share link (pin.it) with invite code
Substack User ID, Name, Handle, Bio, Avatar, Profile Setup Date Requires referral share link (?r= parameter)
Suno Username, Display Name, Avatar, Profile URL
Telegram User ID Decoded from joinchat link hash; no HTTP request needed. Links starting with AAAAA decode to user_id=0 and contain no useful data
Google Docs β˜… Owner Email, Name, Google ID, Avatar, Creation Date, Last Edit, Public Permissions Works for Docs, Sheets, Slides, Drawings, Forms, Drive files, Apps Script, Jamboard, My Maps. Requires document to be publicly shared. API key overridable via SHARETRACE_GDOC_API_KEY
GitHub β˜… Email, Name, Commit SHA, Repo (commit URL); Username, Emails list (profile URL) Commit URL: parses .patch mbox From: header. Profile URL: scans recent public PushEvents (last 90 days). users.noreply.github.com emails flagged. Profile route subject to GitHub's 60/hr unauth rate limit
GitLab β˜… Email, Name, Commit SHA, Project (commit URL); Username, Display name, Avatar, User ID, public_email (profile URL) Commit URL uses same .patch trick as GitHub, handles nested groups. Profile returns public_email only when user opted in (GitLab strips push-event emails). gitlab.com only; self-hosted out of scope
Hugging Face β˜… Username, Fullname, Avatar, Account type (user/org), Follower count, Orgs list Uses undocumented-but-stable /api/users/<name>/overview. Repo URLs resolve to owner. No email (HF privacy default). Denylist prevents service pages (spaces, datasets, etc.) from being treated as profiles
LinkedIn β˜… Display name, Headline, Profile URL, Avatar (OG tags) Covers /in/, /posts/, /pulse/ URLs. Hit rate ~80% on high-profile public accounts; lower / degrading over time as LinkedIn tightens bot defenses. Blocked fetches honestly return {"error": "...", "is_blocked": true} β€” callers should expect this

β˜… = added in this fork


🌐 Web interface (community)

A self-hosted Flask wrapper with a browser UI is available: voelspriet/sharetrace-web β€” live demo at https://share.whopostedwhat.com. Maintained separately against upstream; all extraction logic still lives in this repo.

Screenshot of share.whopostedwhat.com


😊 SOWEL classification

This tool uses the following OSINT techniques:


πŸ™ Acknowledgements

  • soxoj/sharetrace β€” the original project this fork builds on. The CLI scaffolding, platform routing, and every source module for TikTok, Instagram, Discord, ChatGPT, Claude, Perplexity, Microsoft/SharePoint, Pinterest, Substack, Suno, and Telegram were built by soxoj and upstream contributors. All credit for the core project belongs to them.
  • Malfrats/xeuledoc β€” the Google Drive v2beta owner-metadata endpoint was first documented here (GPLv3). The gdoc module in this fork is a clean-room rewrite against the same public API.
  • avonture.be β€” documented the GitHub .patch trick that the github module's commit route relies on.

⚠️ Ethical use & disclaimer

This tool is created for educational and defensive purposes only.

  • Only analyze links that have been publicly shared or sent to you.
  • Only hit endpoints that are explicitly public (no auth, no scraping of private data).
  • The fork maintainer is not responsible for misuse.

Permitted: journalistic fact-checking, corporate security research, authorized penetration testing, counter-scam / anti-fraud work (the reason this fork exists), personal reputation monitoring.

Forbidden: doxxing, harassment, stalking, unauthorized surveillance, social engineering for fraud, privacy invasion, any criminal activity.




Fork by Hieu Ngo β€’ hieu.ngo@chongluadao.vn β€’ chongluadao.vn β€’ Upstream: soxoj/sharetrace β€’ License: GPL-3.0

About

🎭 Reveal the identity behind a share link

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages