diff --git a/.github/workflows/pull_request.yml b/.github/workflows/pull_request.yml
index fb44d4f..a70ad44 100644
--- a/.github/workflows/pull_request.yml
+++ b/.github/workflows/pull_request.yml
@@ -34,13 +34,12 @@ jobs:
- name: Install Dependencies
run: |
python -m pip install --upgrade pip
- pip install flake8 pytest
+ pip install ruff flake8 pytest
if [ -f requirements.txt ]; then pip install -r requirements.txt; fi
- - name: Lint With flake8
+ - name: Lint With Ruff
run: |
# stop the build if there are Python syntax errors or undefined names
- flake8 . --count --select=E9,F63,F7,F82 --show-source --statistics
-
+ ruff check . --output-format=github --select=E9,F63,F7,F82
# exit-zero treats all errors as warnings. The GitHub editor is 127 chars wide
flake8 . --count --exit-zero --max-complexity=10 --max-line-length=127 --statistics
- name: Sherlock Site Detect Tests
diff --git a/removed_sites.json b/removed_sites.json
index 35acf89..87d10c5 100644
--- a/removed_sites.json
+++ b/removed_sites.json
@@ -854,5 +854,42 @@
"url": "https://ebio.gg/{}",
"urlMain": "https:/ebio.gg",
"username_claimed": "dev"
+ },
+ "metacritic": {
+ "errorMsg": "User not found",
+ "errorType": "message",
+ "regexCheck": "^(?![-_].)[A-Za-z0-9-_]{3,15}$",
+ "url": "https://www.metacritic.com/user/{}",
+ "urlMain": "https://www.metacritic.com/",
+ "username_claimed": "blue"
+ },
+ "Oracle Communities": {
+ "errorType": "status_code",
+ "url": "https://community.oracle.com/people/{}",
+ "urlMain": "https://community.oracle.com",
+ "username_claimed": "dev"
+ },
+ "HexRPG": {
+ "errorMsg": "Error : User ",
+ "errorType": "message",
+ "regexCheck": "^[a-zA-Z0-9_ ]{3,20}$",
+ "url": "https://www.hexrpg.com/userinfo/{}",
+ "urlMain": "https://www.hexrpg.com/",
+ "username_claimed": "blue"
+ },
+ "G2G": {
+ "errorType": "response_url",
+ "errorUrl": "https://www.g2g.com/{}",
+ "regexCheck": "^[A-Za-z][A-Za-z0-9_]{2,11}$",
+ "url": "https://www.g2g.com/{}",
+ "urlMain": "https://www.g2g.com/",
+ "username_claimed": "user"
+ },
+ "BitCoinForum": {
+ "errorMsg": "The user whose profile you are trying to view does not exist.",
+ "errorType": "message",
+ "url": "https://bitcoinforum.com/profile/{}",
+ "urlMain": "https://bitcoinforum.com",
+ "username_claimed": "bitcoinforum.com"
}
}
diff --git a/removed_sites.md b/removed_sites.md
index 0b9ff18..e946120 100644
--- a/removed_sites.md
+++ b/removed_sites.md
@@ -1855,4 +1855,66 @@ As of 2023.12.21, Ebio returns false positives.
"urlMain": "https:/ebio.gg",
"username_claimed": "dev"
},
+```
+
+## HexRPG
+__2024-04-07 :__ HexRPG behind authentication wall. Unable to check usernames without logging in.
+```json
+ "HexRPG": {
+ "errorMsg": "Error : User ",
+ "errorType": "message",
+ "regexCheck": "^[a-zA-Z0-9_ ]{3,20}$",
+ "url": "https://www.hexrpg.com/userinfo/{}",
+ "urlMain": "https://www.hexrpg.com/",
+ "username_claimed": "blue"
+ }
+```
+
+## Oracle Communities
+__2024-04-07 :__ Oracle Communities behind authentication wall. Unable to check usernames without logging in.
+```json
+ "Oracle Communities": {
+ "errorType": "status_code",
+ "url": "https://community.oracle.com/people/{}",
+ "urlMain": "https://community.oracle.com",
+ "username_claimed": "dev"
+ }
+```
+
+## Metacritic
+__2024-04-07 :__ Non-existent users seemingly displayed as real users with no activity. Needs adjustment.
+```json
+ "metacritic": {
+ "errorMsg": "User not found",
+ "errorType": "message",
+ "regexCheck": "^(?![-_].)[A-Za-z0-9-_]{3,15}$",
+ "url": "https://www.metacritic.com/user/{}",
+ "urlMain": "https://www.metacritic.com/",
+ "username_claimed": "blue"
+ }
+```
+
+## G2G
+__2024-04-10 :__ Seems to be loading profiles with some wierd javascript setup that sherlock doesn't like, leading to difficult to control false positives
+```json
+ "G2G": {
+ "errorType": "response_url",
+ "errorUrl": "https://www.g2g.com/{}",
+ "regexCheck": "^[A-Za-z][A-Za-z0-9_]{2,11}$",
+ "url": "https://www.g2g.com/{}",
+ "urlMain": "https://www.g2g.com/",
+ "username_claimed": "user"
+ }
+```
+
+## Bitcoin Forum
+__2024-04-24 :__ BCF seems to have gone defunct. Uncertain.
+```json
+"BitCoinForum": {
+ "errorMsg": "The user whose profile you are trying to view does not exist.",
+ "errorType": "message",
+ "url": "https://bitcoinforum.com/profile/{}",
+ "urlMain": "https://bitcoinforum.com",
+ "username_claimed": "bitcoinforum.com"
+ }
```
\ No newline at end of file
diff --git a/sherlock/notify.py b/sherlock/notify.py
index 87bfa0b..4af1ff1 100644
--- a/sherlock/notify.py
+++ b/sherlock/notify.py
@@ -238,6 +238,15 @@ class QueryNotifyPrint(QueryNotify):
Fore.WHITE + "]" +
Fore.GREEN + f" {self.result.site_name}:" +
Fore.YELLOW + f" {msg}")
+
+ elif result.status == QueryStatus.WAF:
+ if self.print_all:
+ print(Style.BRIGHT + Fore.WHITE + "[" +
+ Fore.RED + "-" +
+ Fore.WHITE + "]" +
+ Fore.GREEN + f" {self.result.site_name}:" +
+ Fore.RED + " Blocked by bot detection" +
+ Fore.YELLOW + " (proxy may help)")
else:
# It should be impossible to ever get here...
diff --git a/sherlock/resources/data.json b/sherlock/resources/data.json
index 39de894..d698d52 100644
--- a/sherlock/resources/data.json
+++ b/sherlock/resources/data.json
@@ -148,15 +148,17 @@
},
"Archive of Our Own": {
"errorType": "status_code",
+ "regexCheck": "^[^.]*?$",
"url": "https://archiveofourown.org/users/{}",
"urlMain": "https://archiveofourown.org/",
"username_claimed": "test"
},
"Archive.org": {
- "errorMsg": "cannot find account",
+ "errorMsg": "could not fetch an account with user item identifier",
"errorType": "message",
"url": "https://archive.org/details/@{}",
"urlMain": "https://archive.org",
+ "urlProbe": "https://archive.org/details/@{}?noscript=true",
"username_claimed": "blue"
},
"ArtStation": {
@@ -270,13 +272,6 @@
"urlMain": "https://bitbucket.org/",
"username_claimed": "white"
},
- "BitCoinForum": {
- "errorMsg": "The user whose profile you are trying to view does not exist.",
- "errorType": "message",
- "url": "https://bitcoinforum.com/profile/{}",
- "urlMain": "https://bitcoinforum.com",
- "username_claimed": "bitcoinforum.com"
- },
"Bitwarden Forum": {
"errorType": "status_code",
"regexCheck": "^(?![.-])[a-zA-Z0-9_.-]{3,20}$",
@@ -332,8 +327,8 @@
"username_claimed": "blue"
},
"CGTrader": {
- "errorMsg": "3D models for CG digital design and artwork",
- "errorType": "message",
+ "errorType": "status_code",
+ "regexCheck": "^[^.]*?$",
"url": "https://www.cgtrader.com/{}",
"urlMain": "https://www.cgtrader.com",
"username_claimed": "blue"
@@ -341,9 +336,10 @@
"CNET": {
"errorMsg": "null null - CNET",
"errorType": "message",
+ "regexCheck": "^[a-z].*$",
"url": "https://www.cnet.com/profiles/{}/",
"urlMain": "https://www.cnet.com/",
- "username_claimed": "elliottcnet"
+ "username_claimed": "melliott"
},
"CSSBattle": {
"errorType": "status_code",
@@ -525,8 +521,8 @@
"username_claimed": "blue"
},
"Contently": {
- "errorMsg": "
Leading Content Marketing Platform | Contently",
- "errorType": "message",
+ "errorType": "response_url",
+ "errorUrl": "https://contently.com",
"regexCheck": "^[a-zA-Z][a-zA-Z0-9_-]*$",
"url": "https://{}.contently.com/",
"urlMain": "https://contently.com/",
@@ -662,6 +658,7 @@
},
"Eintracht Frankfurt Forum": {
"errorType": "status_code",
+ "regexCheck": "^[^.]*?$",
"url": "https://community.eintracht.de/fans/{}",
"urlMain": "https://community.eintracht.de/",
"username_claimed": "mmammu"
@@ -811,14 +808,6 @@
"urlMain": "https://freesound.org/",
"username_claimed": "blue"
},
- "G2G": {
- "errorType": "response_url",
- "errorUrl": "https://www.g2g.com/{}",
- "regexCheck": "^[A-Za-z][A-Za-z0-9_]{2,11}$",
- "url": "https://www.g2g.com/{}",
- "urlMain": "https://www.g2g.com/",
- "username_claimed": "user"
- },
"GNOME VCS": {
"errorType": "response_url",
"errorUrl": "https://gitlab.gnome.org/{}",
@@ -841,20 +830,21 @@
"username_claimed": "blue"
},
"GeeksforGeeks": {
- "errorMsg": "Login GeeksforGeeks",
- "errorType": "message",
+ "errorType": "status_code",
"url": "https://auth.geeksforgeeks.org/user/{}",
"urlMain": "https://www.geeksforgeeks.org/",
"username_claimed": "adam"
},
"Genius (Artists)": {
"errorType": "status_code",
+ "regexCheck": "^[a-zA-Z0-9]{5,50}$",
"url": "https://genius.com/artists/{}",
"urlMain": "https://genius.com/",
"username_claimed": "genius"
},
"Genius (Users)": {
"errorType": "status_code",
+ "regexCheck": "^[a-zA-Z0-9]*?$",
"url": "https://genius.com/{}",
"urlMain": "https://genius.com/",
"username_claimed": "genius"
@@ -948,6 +938,7 @@
"Gumroad": {
"errorMsg": "Page not found (404) - Gumroad",
"errorType": "message",
+ "regexCheck": "^[^.]*?$",
"url": "https://www.gumroad.com/{}",
"urlMain": "https://www.gumroad.com/",
"username_claimed": "blue"
@@ -958,14 +949,6 @@
"urlMain": "https://www.gutefrage.net/",
"username_claimed": "gutefrage"
},
- "HEXRPG": {
- "errorMsg": "Error : User ",
- "errorType": "message",
- "regexCheck": "^[a-zA-Z0-9_ ]{3,20}$",
- "url": "https://www.hexrpg.com/userinfo/{}",
- "urlMain": "https://www.hexrpg.com/",
- "username_claimed": "blue"
- },
"HackTheBox": {
"errorType": "status_code",
"url": "https://forum.hackthebox.eu/profile/{}",
@@ -994,7 +977,11 @@
"username_claimed": "naveennamani877"
},
"HackerNews": {
- "errorMsg": "No such user.",
+ "::::README::::": "First errMsg invalid, second errMsg rate limited. Not ideal. Adjust for better rate limit filtering.",
+ "errorMsg": [
+ "No such user.",
+ "Sorry."
+ ],
"errorType": "message",
"url": "https://news.ycombinator.com/user?id={}",
"urlMain": "https://news.ycombinator.com/",
@@ -1010,6 +997,7 @@
"HackerRank": {
"errorMsg": "Something went wrong",
"errorType": "message",
+ "regexCheck": "^[^.]*?$",
"url": "https://hackerrank.com/{}",
"urlMain": "https://hackerrank.com/",
"username_claimed": "satznova"
@@ -1073,8 +1061,7 @@
"username_claimed": "Micheal"
},
"IFTTT": {
- "errorMsg": "The requested page or file does not exist",
- "errorType": "message",
+ "errorType": "status_code",
"regexCheck": "^[A-Za-z0-9]{3,35}$",
"url": "https://www.ifttt.com/p/{}",
"urlMain": "https://www.ifttt.com/",
@@ -1212,8 +1199,11 @@
"username_claimed": "blue"
},
"Kongregate": {
- "errorMsg": "Sorry, no account with that name was found.",
- "errorType": "message",
+ "errorType": "status_code",
+ "headers": {
+ "Accept": "text/html",
+ "User-Agent": "Mozilla/5.0 (X11; Linux x86_64; rv:109.0) Gecko/20100101 Firefox/116.0"
+ },
"regexCheck": "^[a-zA-Z][a-zA-Z0-9_-]*$",
"url": "https://www.kongregate.com/accounts/{}",
"urlMain": "https://www.kongregate.com/",
@@ -1258,7 +1248,8 @@
"username_claimed": "blue"
},
"Linktree": {
- "errorType": "status_code",
+ "errorMsg": "\"statusCode\":404",
+ "errorType": "message",
"url": "https://linktr.ee/{}",
"urlMain": "https://linktr.ee/",
"username_claimed": "anne"
@@ -1338,13 +1329,6 @@
"urlProbe": "https://api.mixcloud.com/{}/",
"username_claimed": "jenny"
},
- "Modelhub": {
- "errorType": "status_code",
- "isNSFW": true,
- "url": "https://www.modelhub.com/{}/videos",
- "urlMain": "https://www.modelhub.com/",
- "username_claimed": "secretcrush"
- },
"Monkeytype": {
"errorType": "status_code",
"url": "https://monkeytype.com/profile/{}",
@@ -1487,6 +1471,7 @@
},
"OpenStreetMap": {
"errorType": "status_code",
+ "regexCheck": "^[^.]*?$",
"url": "https://www.openstreetmap.org/user/{}",
"urlMain": "https://www.openstreetmap.org/",
"username_claimed": "blue"
@@ -1497,12 +1482,6 @@
"urlMain": "https://opensource.com/",
"username_claimed": "red"
},
- "Oracle Community": {
- "errorType": "status_code",
- "url": "https://community.oracle.com/people/{}",
- "urlMain": "https://community.oracle.com",
- "username_claimed": "dev"
- },
"OurDJTalk": {
"errorMsg": "The specified member cannot be found",
"errorType": "message",
@@ -1566,6 +1545,7 @@
},
"Pinkbike": {
"errorType": "status_code",
+ "regexCheck": "^[^.]*?$",
"url": "https://www.pinkbike.com/u/{}/",
"urlMain": "https://www.pinkbike.com/",
"username_claimed": "blue"
@@ -1604,8 +1584,8 @@
"username_claimed": "swiftstickler"
},
"Polymart": {
- "errorMsg": "Looks like we couldn't find this user. Sorry!",
- "errorType": "message",
+ "errorType": "response_url",
+ "errorUrl": "https://polymart.org/user/-1",
"url": "https://polymart.org/user/{}",
"urlMain": "https://polymart.org/",
"username_claimed": "craciu25yt"
@@ -1826,6 +1806,7 @@
"username_claimed": "blue"
},
"Slides": {
+ "errorCode": 204,
"errorType": "status_code",
"url": "https://slides.com/{}",
"urlMain": "https://slides.com/",
@@ -1892,6 +1873,7 @@
},
"Splits.io": {
"errorType": "status_code",
+ "regexCheck": "^[^.]*?$",
"url": "https://splits.io/users/{}",
"urlMain": "https://splits.io",
"username_claimed": "cambosteve"
@@ -1940,6 +1922,7 @@
"Strava": {
"errorMsg": "Strava | Running, Cycling & Hiking App - Train, Track & Share",
"errorType": "message",
+ "regexCheck": "^[^.]*?$",
"url": "https://www.strava.com/athletes/{}",
"urlMain": "https://www.strava.com/",
"username_claimed": "blue"
@@ -1972,12 +1955,15 @@
"username_claimed": "traktrain"
},
"Telegram": {
- "errorMsg": "",
+ "errorMsg": [
+ "Telegram Messenger",
+ "If you have Telegram, you can contact = 300 or r.status_code < 200:
- query_status = QueryStatus.CLAIMED
- else:
+ elif r.status_code >= 300 or r.status_code < 200:
query_status = QueryStatus.AVAILABLE
elif error_type == "response_url":
# For this detection method, we have turned off the redirect.
diff --git a/sites.md b/sites.md
index ce2fd7f..b29f97b 100644
--- a/sites.md
+++ b/sites.md
@@ -38,7 +38,6 @@
1. ![](https://www.google.com/s2/favicons?domain=https://www.bikemap.net/) [Bikemap](https://www.bikemap.net/)
1. ![](https://www.google.com/s2/favicons?domain=https://forum.dangerousthings.com/) [BioHacking](https://forum.dangerousthings.com/)
1. ![](https://www.google.com/s2/favicons?domain=https://bitbucket.org/) [BitBucket](https://bitbucket.org/)
-1. ![](https://www.google.com/s2/favicons?domain=https://bitcoinforum.com) [BitCoinForum](https://bitcoinforum.com)
1. ![](https://www.google.com/s2/favicons?domain=https://bitwarden.com/) [Bitwarden Forum](https://bitwarden.com/)
1. ![](https://www.google.com/s2/favicons?domain=https://www.blogger.com/) [Blogger](https://www.blogger.com/)
1. ![](https://www.google.com/s2/favicons?domain=https://bodyspace.bodybuilding.com/) [BodyBuilding](https://bodyspace.bodybuilding.com/)
@@ -117,7 +116,6 @@
1. ![](https://www.google.com/s2/favicons?domain=https://freelance.habr.com/) [Freelance.habr](https://freelance.habr.com/)
1. ![](https://www.google.com/s2/favicons?domain=https://www.freelancer.com/) [Freelancer](https://www.freelancer.com/)
1. ![](https://www.google.com/s2/favicons?domain=https://freesound.org/) [Freesound](https://freesound.org/)
-1. ![](https://www.google.com/s2/favicons?domain=https://www.g2g.com/) [G2G](https://www.g2g.com/)
1. ![](https://www.google.com/s2/favicons?domain=https://gitlab.gnome.org/) [GNOME VCS](https://gitlab.gnome.org/)
1. ![](https://www.google.com/s2/favicons?domain=https://www.gaiaonline.com/) [GaiaOnline](https://www.gaiaonline.com/)
1. ![](https://www.google.com/s2/favicons?domain=https://www.gamespot.com/) [Gamespot](https://www.gamespot.com/)
@@ -139,7 +137,6 @@
1. ![](https://www.google.com/s2/favicons?domain=http://en.gravatar.com/) [Gravatar](http://en.gravatar.com/)
1. ![](https://www.google.com/s2/favicons?domain=https://www.gumroad.com/) [Gumroad](https://www.gumroad.com/)
1. ![](https://www.google.com/s2/favicons?domain=https://www.gutefrage.net/) [Gutefrage](https://www.gutefrage.net/)
-1. ![](https://www.google.com/s2/favicons?domain=https://www.hexrpg.com/) [HEXRPG](https://www.hexrpg.com/)
1. ![](https://www.google.com/s2/favicons?domain=https://forum.hackthebox.eu/) [HackTheBox](https://forum.hackthebox.eu/)
1. ![](https://www.google.com/s2/favicons?domain=https://hackaday.io/) [Hackaday](https://hackaday.io/)
1. ![](https://www.google.com/s2/favicons?domain=https://hackenproof.com/) [HackenProof (Hackers)](https://hackenproof.com/)
@@ -194,7 +191,6 @@
1. ![](https://www.google.com/s2/favicons?domain=https://www.memrise.com/) [Memrise](https://www.memrise.com/)
1. ![](https://www.google.com/s2/favicons?domain=https://minecraft.net/) [Minecraft](https://minecraft.net/)
1. ![](https://www.google.com/s2/favicons?domain=https://www.mixcloud.com/) [MixCloud](https://www.mixcloud.com/)
-1. ![](https://www.google.com/s2/favicons?domain=https://www.modelhub.com/) [Modelhub](https://www.modelhub.com/) **(NSFW)**
1. ![](https://www.google.com/s2/favicons?domain=https://monkeytype.com/) [Monkeytype](https://monkeytype.com/)
1. ![](https://www.google.com/s2/favicons?domain=https://motherless.com/) [Motherless](https://motherless.com/) **(NSFW)**
1. ![](https://www.google.com/s2/favicons?domain=https://www.motorradfrage.net/) [Motorradfrage](https://www.motorradfrage.net/)
@@ -218,7 +214,6 @@
1. ![](https://www.google.com/s2/favicons?domain=https://ogu.gg/) [OGUsers](https://ogu.gg/)
1. ![](https://www.google.com/s2/favicons?domain=https://www.openstreetmap.org/) [OpenStreetMap](https://www.openstreetmap.org/)
1. ![](https://www.google.com/s2/favicons?domain=https://opensource.com/) [Opensource](https://opensource.com/)
-1. ![](https://www.google.com/s2/favicons?domain=https://community.oracle.com) [Oracle Community](https://community.oracle.com)
1. ![](https://www.google.com/s2/favicons?domain=https://ourdjtalk.com/) [OurDJTalk](https://ourdjtalk.com/)
1. ![](https://www.google.com/s2/favicons?domain=https://pcgamer.com) [PCGamer](https://pcgamer.com)
1. ![](https://www.google.com/s2/favicons?domain=https://psnprofiles.com/) [PSNProfiles.com](https://psnprofiles.com/)
@@ -366,7 +361,7 @@
1. ![](https://www.google.com/s2/favicons?domain=https://www.interpals.net/) [interpals](https://www.interpals.net/)
1. ![](https://www.google.com/s2/favicons?domain=https://irecommend.ru/) [irecommend](https://irecommend.ru/)
1. ![](https://www.google.com/s2/favicons?domain=https://jbzd.com.pl/) [jbzd.com.pl](https://jbzd.com.pl/)
-1. ![](https://www.google.com/s2/favicons?domain=http://www.jeuxvideo.com) [jeuxvideo](http://www.jeuxvideo.com)
+1. ![](https://www.google.com/s2/favicons?domain=https://www.jeuxvideo.com) [jeuxvideo](https://www.jeuxvideo.com)
1. ![](https://www.google.com/s2/favicons?domain=https://ko-fi.com) [kofi](https://ko-fi.com)
1. ![](https://www.google.com/s2/favicons?domain=https://www.kwork.ru/) [kwork](https://www.kwork.ru/)
1. ![](https://www.google.com/s2/favicons?domain=https://lab.pentestit.ru/) [labpentestit](https://lab.pentestit.ru/)
@@ -378,7 +373,6 @@
1. ![](https://www.google.com/s2/favicons?domain=https://mastodon.xyz/) [mastodon.technology](https://mastodon.xyz/)
1. ![](https://www.google.com/s2/favicons?domain=https://mastodon.xyz/) [mastodon.xyz](https://mastodon.xyz/)
1. ![](https://www.google.com/s2/favicons?domain=https://www.mercadolivre.com.br) [mercadolivre](https://www.mercadolivre.com.br)
-1. ![](https://www.google.com/s2/favicons?domain=https://www.metacritic.com/) [metacritic](https://www.metacritic.com/)
1. ![](https://www.google.com/s2/favicons?domain=https://www.minds.com) [minds](https://www.minds.com)
1. ![](https://www.google.com/s2/favicons?domain=https://moikrug.ru/) [moikrug](https://moikrug.ru/)
1. ![](https://www.google.com/s2/favicons?domain=https://mstdn.io/) [mstdn.io](https://mstdn.io/)