diff --git a/README.md b/README.md
index a984f2e4..56687234 100644
--- a/README.md
+++ b/README.md
@@ -3,7 +3,7 @@
- Hunt down social media accounts by username across social networks
+ Hunt down social media accounts by username across social networks
@@ -15,15 +15,13 @@
- Demo - | Installation | Usage | Docker Notes | - Adding New Sites + Contributing
@@ -35,8 +33,6 @@ ## Installation -**NOTE**: Python 3.6 or higher is required. - ```console # clone the repo $ git clone https://github.com/sherlock-project/sherlock.git @@ -44,8 +40,6 @@ $ git clone https://github.com/sherlock-project/sherlock.git # change the working directory to sherlock $ cd sherlock -# install python3 and python3-pip if they are not installed - # install the requirements $ python3 -m pip install -r requirements.txt ``` @@ -153,13 +147,16 @@ You can use the `docker-compose.yml` file from the repository and use this comma docker-compose run sherlock -o /opt/sherlock/results/text.txt user123 ``` -## Adding New Sites +## Contributing +We would love to have you help us on the development of Sherlock. Each and every contribution is greatly valued! + +Here are some things we would appriciate your help on: +- Addition of new site support ยน +- Bringing back site support of [sites that have been removed](removed_sites.md) in the past due to false positives -Please look at the Wiki entry on -[adding new sites](https://github.com/TheYahya/sherlock/wiki/Adding-Sites-To-Sherlock) -to understand the issues. -**NOTE**: Sherlock is not accepting adult sites in the standard list. +[1] Please look at the Wiki entry on [adding new sites](https://github.com/sherlock-project/sherlock/wiki/Adding-Sites-To-Sherlock) +to understand the issues. ## Tests diff --git a/data_bad_site.json b/removed_sites.json similarity index 81% rename from data_bad_site.json rename to removed_sites.json index 3fab00c2..f9ec778b 100644 --- a/data_bad_site.json +++ b/removed_sites.json @@ -396,6 +396,84 @@ "urlMain": "https://yandex.ru/collections/", "username_claimed": "blue", "username_unclaimed": "noonewouldeverusethis7" + }, + "500px": { + "errorMsg": "Oops! This page doesn\u2019t exist.", + "errorType": "message", + "regexCheck": "^[a-z0-9_]+$", + "url": "https://500px.com/{}", + "urlMain": "https://500px.com/", + "username_claimed": "blue", + "username_unclaimed": "noonewouldeverusethis7" + }, + "PayPal": { + "errorMsg": "", + "errorType": "message", + "url": "https://www.paypal.com/paypalme/{}", + "headers": { + "User-Agent": "" + }, + "urlMain": "https://www.paypal.me/", + "username_claimed": "blue", + "username_unclaimed": "noneownsthisusername7" + }, + "Fiverr": { + "errorType": "response_url", + "errorUrl": "https://www.fiverr.com/", + "url": "https://www.fiverr.com/{}", + "urlMain": "https://www.fiverr.com/", + "username_claimed": "blue", + "username_unclaimed": "noonewouldeverusethis" + }, + "ImageShack": { + "errorType": "response_url", + "errorUrl": "https://imageshack.us/", + "url": "https://imageshack.us/user/{}", + "urlMain": "https://imageshack.us/", + "username_claimed": "blue", + "username_unclaimed": "noonewouldeverusethis7" + }, + "Aptoide": { + "errorType": "status_code", + "url": "https://{}.en.aptoide.com/", + "urlMain": "https://en.aptoide.com/", + "username_claimed": "blue", + "username_unclaimed": "noonewouldeverusethis7" + }, + "Crunchyroll": { + "errorType": "status_code", + "url": "https://www.crunchyroll.com/user/{}", + "urlMain": "https://www.crunchyroll.com/", + "username_claimed": "blue", + "username_unclaimed": "noonewouldeverusethis7" + }, + "T-MobileSupport": { + "errorType": "status_code", + "url": "https://support.t-mobile.com/people/{}", + "urlMain": "https://support.t-mobile.com", + "username_claimed": "blue", + "username_unclaimed": "noonewouldeverusethis7" + }, + "OpenCollective": { + "errorType": "status_code", + "url": "https://opencollective.com/{}", + "urlMain": "https://opencollective.com/", + "username_claimed": "sindresorhus", + "username_unclaimed": "noonewouldeverusethis7" + }, + "SegmentFault": { + "errorType": "status_code", + "url": "https://segmentfault.com/u/{}", + "urlMain": "https://segmentfault.com/", + "username_claimed": "bule", + "username_unclaimed": "noonewouldeverusethis7" + }, + "Viadeo": { + "errorType": "status_code", + "url": "http://fr.viadeo.com/en/profile/{}", + "urlMain": "http://fr.viadeo.com/en/", + "username_claimed": "franck.patissier", + "username_unclaimed": "noonewouldeverusethis" } } diff --git a/removed_sites.md b/removed_sites.md index 3e6d59a8..1af7a3f4 100644 --- a/removed_sites.md +++ b/removed_sites.md @@ -123,7 +123,6 @@ This can be detected, but it requires a different detection method. As of 2020-02-23, all usernames are reported as not existing. -Why was this ever added? It does not look like a social network. ``` "Basecamp": { @@ -793,4 +792,150 @@ As of 2020-08-11, YandexCollection presents us with a rechapta which prevents us "username_claimed": "blue", "username_unclaimed": "noonewouldeverusethis7" }, -``` \ No newline at end of file +``` + +## 500px + +As of 2020-08-24, 500px now returns false positives, which was found when running the tests, but will most likley be added again in the near +future once we find a better error detecting method. +``` + "500px": { + "errorMsg": "Oops! This page doesn\u2019t exist.", + "errorType": "message", + "regexCheck": "^[a-z0-9_]+$", + "url": "https://500px.com/{}", + "urlMain": "https://500px.com/", + "username_claimed": "blue", + "username_unclaimed": "noonewouldeverusethis7" + }, +``` + +## PayPal + +As of 2020-08-24, PayPal now returns false positives, which was found when running the tests, but will most likley be added again in the near +future once we find a better error detecting method. +``` + "PayPal": { + "errorMsg": "", + "errorType": "message", + "url": "https://www.paypal.com/paypalme/{}", + "headers": { + "User-Agent": "" + }, + "urlMain": "https://www.paypal.me/", + "username_claimed": "blue", + "username_unclaimed": "noneownsthisusername7" + }, +``` + +## Fiverr + +As of 2020-08-24, Fiverr now returns false positives, which was found when running the tests, but will most likley be added again in the near +future once we find a better error detecting method. +``` + "Fiverr": { + "errorType": "response_url", + "errorUrl": "https://www.fiverr.com/", + "url": "https://www.fiverr.com/{}", + "urlMain": "https://www.fiverr.com/", + "username_claimed": "blue", + "username_unclaimed": "noonewouldeverusethis" + }, +``` + +## ImageShack + +As of 2020-08-24, ImageShack now returns false positives, which was found when running the tests, but will most likley be added again in the near future once we find a better error detecting method. +``` + "ImageShack": { + "errorType": "response_url", + "errorUrl": "https://imageshack.us/", + "url": "https://imageshack.us/user/{}", + "urlMain": "https://imageshack.us/", + "username_claimed": "blue", + "username_unclaimed": "noonewouldeverusethis7" + }, +``` + +## Aptoide + +As of 2020-08-24, Aptoide now returns false positives, which was found when running the tests, but will most likley be added again in the near +future once we find a better error detecting method. +``` + "Aptoide": { + "errorType": "status_code", + "url": "https://{}.en.aptoide.com/", + "urlMain": "https://en.aptoide.com/", + "username_claimed": "blue", + "username_unclaimed": "noonewouldeverusethis7" + }, +``` + +## Crunchyroll + +As of 2020-08-24, Crunchyroll now returns false positives, which was found when running the tests, but will most likley be added again in the near future once we find a better error detecting method. + +``` + "Crunchyroll": { + "errorType": "status_code", + "url": "https://www.crunchyroll.com/user/{}", + "urlMain": "https://www.crunchyroll.com/", + "username_claimed": "blue", + "username_unclaimed": "noonewouldeverusethis7" + }, +``` + +## T-MobileSupport +As of 2020-08-24, T-MobileSupport now returns false positives, which was found when running the tests, but will most likley be added again in the near future once we find a better error detecting method. + +``` + "T-MobileSupport": { + "errorType": "status_code", + "url": "https://support.t-mobile.com/people/{}", + "urlMain": "https://support.t-mobile.com", + "username_claimed": "blue", + "username_unclaimed": "noonewouldeverusethis7" + }, +``` + +## OpenCollective + +As of 2020-08-24, OpenCollective now returns false positives, which was found when running the tests, but will most likley be added again in the near future once we find a better error detecting method. + +``` + "OpenCollective": { + "errorType": "status_code", + "url": "https://opencollective.com/{}", + "urlMain": "https://opencollective.com/", + "username_claimed": "sindresorhus", + "username_unclaimed": "noonewouldeverusethis7" + }, +``` + +## SegmentFault + +As of 2020-08-24, SegmentFault now returns false positives, which was found when running the tests, but will most likley be added again in the near future once we find a better error detecting method. + +``` + "SegmentFault": { + "errorType": "status_code", + "url": "https://segmentfault.com/u/{}", + "urlMain": "https://segmentfault.com/", + "username_claimed": "bule", + "username_unclaimed": "noonewouldeverusethis7" + }, +``` + +## Viadeo + +As of 2020-08-24, Viadeo now returns false positives, which was found when running the tests, but will most likley be added again in the near future once we find a fix for this + +``` + "Viadeo": { + "errorType": "status_code", + "url": "http://fr.viadeo.com/en/profile/{}", + "urlMain": "http://fr.viadeo.com/en/", + "username_claimed": "franck.patissier", + "username_unclaimed": "noonewouldeverusethis" + }, +``` diff --git a/sherlock/resources/data.json b/sherlock/resources/data.json index 5af27b6f..1a33f528 100644 --- a/sherlock/resources/data.json +++ b/sherlock/resources/data.json @@ -22,15 +22,6 @@ "username_claimed": "green", "username_unclaimed": "noonewouldeverusethis7" }, - "500px": { - "errorMsg": "Oops! This page doesn\u2019t exist.", - "errorType": "message", - "regexCheck": "^[a-z0-9_]+$", - "url": "https://500px.com/{}", - "urlMain": "https://500px.com/", - "username_claimed": "blue", - "username_unclaimed": "noonewouldeverusethis7" - }, "7Cups": { "errorType": "status_code", "url": "https://www.7cups.com/@{}", @@ -81,13 +72,6 @@ "username_claimed": "blue", "username_unclaimed": "noonewouldeverusethis7" }, - "Aptoide": { - "errorType": "status_code", - "url": "https://{}.en.aptoide.com/", - "urlMain": "https://en.aptoide.com/", - "username_claimed": "blue", - "username_unclaimed": "noonewouldeverusethis7" - }, "Archive.org": { "errorMsg": "cannot find account", "errorType": "message", @@ -180,6 +164,16 @@ "username_claimed": "blue", "username_unclaimed": "noonewouldeverusethis7" }, + "BinarySearch": { + "errorMsg": "{}", + "errorType": "message", + "regexCheck": "^[a-zA-Z0-9-_]{1,15}$", + "url":"https://binarysearch.io/@/{}", + "urlProbe": "https://binarysearch.io/api/users/{}/profile", + "urlMain": "https://binarysearch.io/", + "username_claimed": "Eyes_Wide_Shut", + "username_unclaimed": "hihowareyou101" + }, "BitBucket": { "errorType": "status_code", "regexCheck": "^[a-zA-Z0-9-_]{1,30}$", @@ -320,7 +314,8 @@ "username_unclaimed": "noonewouldeverusethis" }, "Clozemaster": { - "errorType": "status_code", + "errorType": "message", + "errorMsg": "Oh no! Player not found.", "url": "https://www.clozemaster.com/players/{}", "urlMain": "https://www.clozemaster.com", "username_claimed": "green", @@ -386,13 +381,6 @@ "username_claimed": "blue", "username_unclaimed": "noonewouldeverusethis7" }, - "Crunchyroll": { - "errorType": "status_code", - "url": "https://www.crunchyroll.com/user/{}", - "urlMain": "https://www.crunchyroll.com/", - "username_claimed": "blue", - "username_unclaimed": "noonewouldeverusethis7" - }, "DEV Community": { "errorType": "status_code", "regexCheck": "^[a-zA-Z][a-zA-Z0-9_-]*$", @@ -521,7 +509,8 @@ "regexCheck": "^[a-zA-Z0-9\\.]{3,49}(?", - "errorType": "message", - "url": "https://www.paypal.com/paypalme/{}", - "headers": { - "User-Agent": "" - }, - "urlMain": "https://www.paypal.me/", - "username_claimed": "blue", - "username_unclaimed": "noneownsthisusername7" - }, "Periscope": { "errorType": "status_code", "url": "https://www.periscope.tv/{}/", @@ -1387,13 +1342,6 @@ "username_claimed": "blue", "username_unclaimed": "noonewouldeverusethis7" }, - "SegmentFault": { - "errorType": "status_code", - "url": "https://segmentfault.com/u/{}", - "urlMain": "https://segmentfault.com/", - "username_claimed": "bule", - "username_unclaimed": "noonewouldeverusethis7" - }, "ShitpostBot5000": { "errorType": "status_code", "url": "https://www.shitpostbot.com/user/{}", @@ -1558,13 +1506,6 @@ "username_claimed": "blue", "username_unclaimed": "noonewouldeverusethis" }, - "T-MobileSupport": { - "errorType": "status_code", - "url": "https://support.t-mobile.com/people/{}", - "urlMain": "https://support.t-mobile.com", - "username_claimed": "blue", - "username_unclaimed": "noonewouldeverusethis7" - }, "Taringa": { "errorType": "status_code", "url": "https://www.taringa.net/{}", @@ -1729,13 +1670,6 @@ "username_claimed": "jenny", "username_unclaimed": "noonewouldeverusethis7" }, - "Viadeo": { - "errorType": "status_code", - "url": "http://fr.viadeo.com/en/profile/{}", - "urlMain": "http://fr.viadeo.com/en/", - "username_claimed": "franck.patissier", - "username_unclaimed": "noonewouldeverusethis" - }, "Vimeo": { "errorType": "status_code", "url": "https://vimeo.com/{}", diff --git a/sherlock/sherlock.py b/sherlock/sherlock.py index a31a25f1..3cc5ea92 100644 --- a/sherlock/sherlock.py +++ b/sherlock/sherlock.py @@ -25,7 +25,8 @@ from notify import QueryNotifyPrint from sites import SitesInformation module_name = "Sherlock: Find Usernames Across Social Networks" -__version__ = "0.12.7" +__version__ = "0.12.6" + @@ -564,16 +565,19 @@ def main(): site_data = {} site_missing = [] for site in args.site_list: + counter = 0 for existing_site in site_data_all: if site.lower() == existing_site.lower(): site_data[existing_site] = site_data_all[existing_site] - if not site_data: + counter += 1 + if counter == 0: # Build up list of sites not supported for future error message. site_missing.append(f"'{site}'") if site_missing: - print( - f"Error: Desired sites not found: {', '.join(site_missing)}.") + print(f"Error: Desired sites not found: {', '.join(site_missing)}.") + + if not site_data: sys.exit(1) #Create notify object for query results. diff --git a/sherlock/tests/all.py b/sherlock/tests/all.py index 4a9e5355..90892b79 100644 --- a/sherlock/tests/all.py +++ b/sherlock/tests/all.py @@ -75,7 +75,7 @@ class SherlockDetectTests(SherlockBaseTest): Will trigger an assert if detection mechanism did not work as expected. """ - site = 'Facebook' + site = 'Pinterest' site_data = self.site_data_all[site] #Ensure that the site's detection method has not changed. @@ -102,7 +102,7 @@ class SherlockDetectTests(SherlockBaseTest): Will trigger an assert if detection mechanism did not work as expected. """ - site = 'Facebook' + site = 'Pinterest' site_data = self.site_data_all[site] #Ensure that the site's detection method has not changed. diff --git a/sites.md b/sites.md index 9db3a4ca..612c18ab 100644 --- a/sites.md +++ b/sites.md @@ -303,3 +303,4 @@ 302. [Warrior Forum](https://www.warriorforum.com/) 303. [Windy](https://windy.com/) 304. [Strava](https://www.strava.com/) +305. [BinarySearch](https://binarysearch.io/)