Skip to content

Remediate false positives for 9 excluded sites - #3134

Open
MRashad01 wants to merge 2 commits into
sherlock-project:masterfrom
MRashad01:fix/false-positive-remediation
Open

MRashad01 wants to merge 2 commits into
sherlock-project:masterfrom
MRashad01:fix/false-positive-remediation

Conversation

@MRashad01

@MRashad01 MRashad01 commented Sep 14, 2026

Copy link
Copy Markdown

Summary

Fixes detection for nine sites on the false positive exclusion list, per the contribution call in #2547. Each fix is a live-verified change to sherlock_project/resources/data.json — no logic changes.

Site Root cause Fix
TryHackMe urlProbe API endpoint now redirects to not-found for every username Detect via profile page title instead
Hashnode Missing profiles return HTTP 200, so status_code always false-positived Switch to message on the "User not found" title; refreshed dead username_claimed
GeeksforGeeks Old auth.geeksforgeeks.org profile URL is gone Move to www.geeksforgeeks.org/user/{}, update error title
Discord.bio Old message errorMsg no longer matches current error page Switch to status_code (404 vs 200 is clean)
ReverbNation Same — stale message errorMsg Switch to status_code (404 vs 200 is clean)
interpals Same — stale message errorMsg Switch to status_code (404 vs 200 is clean)
dailykos urlProbe nickname-availability endpoint is dead (404s unconditionally) Drop urlProbe, use main profile URL with status_code
Chatujme.cz Site's Czech "profile doesn't exist" copy changed Update errorMsg to the new stable substring (nelze zobrazit)
Rarible API now soft-404s (HTTP 200 + HTML "Page Not Found" body) instead of a real error status Switch status_codemessage on the HTML title

Testing

For every site: verified live across 2+ rounds (randomly generated username vs. a real known username), then ran the project's own validation suite:

pytest tests/test_validate_targets.py -m "validate_targets and online" \
  --chunked-sites="TryHackMe,Hashnode,GeeksforGeeks,Discord.bio,ReverbNation,interpals,dailykos,Chatujme.cz,Rarible"

18/18 passed (false positive + false negative checks for all 9 sites). pytest tests/test_manifest.py also passes (schema valid).

Note on scope

I triaged the full exclusion list (~46 sites). Most of the remainder are genuinely hard — Cloudflare/WAF blocking (Giphy, hunting, phpRU), identical HEAD/GET responses regardless of username (Bandcamp, Weblate, Scribd, and others), or JS-rendered SPAs with no distinguishing server response. I didn't want to guess at fixes I couldn't verify, so this PR only includes the sites where I found a reliable, reproducible signal. Happy to keep working through the rest in follow-ups if useful.

🤖 Generated with Claude Code

https://claude.ai/code/session_0169CZZQwQdKmRe4sNXobKix

MRashad01 and others added 2 commits September 14, 2026 19:25
TryHackMe: the /api/user/exist/ probe endpoint now redirects to the
not-found page for every username, so every lookup was a false result.
Detection now checks the profile page title, which is the site default
for missing users and personalized for existing ones.

Hashnode: profile pages return HTTP 200 for nonexistent users, so
status_code detection produced false positives. Switched to message
detection on the "User not found" page title. The previous
username_claimed (blue) no longer exists; replaced with an active user.

GeeksforGeeks: auth.geeksforgeeks.org profile URLs are gone; moved to
www.geeksforgeeks.org/user/{} and updated the error message to match
the new missing-user page title.

All three pass test_validate_targets (false positive and false
negative checks) and the manifest schema tests.

Ref sherlock-project#2547

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0169CZZQwQdKmRe4sNXobKix
…ailykos, Chatujme.cz, Rarible

Discord.bio, ReverbNation, interpals: status_code now cleanly
distinguishes missing (404) from existing (200) profiles; the old
message-based errorMsg no longer matches current page content, so
these were always falling through to Claimed.

dailykos: the urlProbe nickname-availability endpoint
(check_nickname) is dead and now 404s unconditionally. Dropped it in
favor of the main profile URL, which cleanly 404s for missing users.

Chatujme.cz: the site's Czech "profile does not exist" copy changed
from "Neexistující profil" to "Profil {user} nelze zobrazit" — updated
the error message to match the stable "nelze zobrazit" substring.

Rarible: the API now soft-404s (HTTP 200 with an HTML "Page Not Found"
body) for missing users instead of a real 404, while existing users
still get the original JSON payload. Switched from status_code to
message detection on that HTML title.

All six verified live across two rounds each (random vs. known
username) and pass test_validate_targets (false positive + false
negative) plus the manifest schema tests.

Ref sherlock-project#2547

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0169CZZQwQdKmRe4sNXobKix
@MRashad01 MRashad01 changed the title Remediate false positives for TryHackMe, Hashnode, and GeeksforGeeks Remediate false positives for 9 excluded sites Sep 14, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant