Guest User

Untitled

a guest
Jun 16th, 2026
8
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.31 KB | None | 0 0
  1. import requests
  2. import time
  3.  
  4. GITHUB_API = "https://api.github.com"
  5.  
  6. def get_repos(username):
  7. headers = {}
  8. repos = []
  9. page = 1
  10. while True:
  11. url = f"{GITHUB_API}/users/{username}/repos?per_page=100&page={page}"
  12. r = requests.get(url, headers=headers)
  13. if r.status_code != 200:
  14. print(f"[!] Failed to fetch repos (status {r.status_code})")
  15. break
  16. data = r.json()
  17. if not data:
  18. break
  19. repos.extend([repo for repo in data if not repo.get("fork", False)])
  20. page += 1
  21. return repos
  22.  
  23. def get_user_emails(owner, repo, username):
  24. headers = {}
  25. emails = set()
  26. page = 1
  27. while True:
  28. url = f"{GITHUB_API}/repos/{owner}/{repo}/commits?per_page=100&page={page}"
  29. r = requests.get(url, headers=headers)
  30. if r.status_code != 200:
  31. print(f"[!] Failed to fetch commits for {repo} (status {r.status_code})")
  32. break
  33. commits = r.json()
  34. if not commits:
  35. break
  36. for commit in commits:
  37. try:
  38. author = commit.get("author")
  39. if author and author.get("login", "").lower() == username.lower():
  40. email = commit["commit"]["author"]["email"]
  41. if email and "noreply.github.com" not in email:
  42. emails.add(email)
  43. except KeyError:
  44. pass
  45. page += 1
  46. time.sleep(0.5)
  47. return emails
  48.  
  49. def find_emails(username):
  50. repos = get_repos(username)
  51. all_emails = set()
  52. print(f"\n[+] Found {len(repos)} non-forked public repositories\n")
  53. for repo in repos:
  54. repo_name = repo["name"]
  55. print(f"[*] Scanning repository: {repo_name}")
  56. emails = get_user_emails(username, repo_name, username)
  57. all_emails.update(emails)
  58. return all_emails
  59.  
  60. if __name__ == "__main__":
  61. print("=== GitHub User Email Finder ===")
  62. username = input("Enter GitHub username: ").strip()
  63. if not username:
  64. print("[!] No username provided.")
  65. exit(1)
  66.  
  67. emails = find_emails(username)
  68.  
  69. print("\n=== Emails Found ===")
  70. if emails:
  71. for email in sorted(emails):
  72. print(email)
  73. else:
  74. print("No public emails found for this user.")
Advertisement
Add Comment
Please, Sign In to add comment