Utils.py 975 B

12345678910111213141516171819202122232425262728293031323334353637
  1. import json
  2. import base64
  3. import random
  4. import socket
  5. def base64url_decode(base64_str):
  6. size = len(base64_str) % 4
  7. if size == 2:
  8. base64_str += '=='
  9. elif size == 3:
  10. base64_str += '='
  11. elif size != 0:
  12. raise ValueError('Invalid base64 string')
  13. return base64.urlsafe_b64decode(base64_str.encode('utf-8'))
  14. def parse_jwt(jwt_token):
  15. jwt_token_list = jwt_token.split('.')
  16. header = base64url_decode(jwt_token_list[0]).decode()
  17. payload = base64url_decode(jwt_token_list[1]).decode()
  18. return {
  19. 'header': json.loads(header),
  20. 'payload': json.loads(payload),
  21. 'signature': jwt_token_list[-1]
  22. }
  23. def generate_random_code(n):
  24. range_start = 10**(n-1)
  25. range_end = (10**n)-1
  26. return str(random.randint(range_start, range_end))
  27. def get_ip_address(domain):
  28. try:
  29. return socket.gethostbyname(domain)
  30. except socket.gaierror as e:
  31. print(f"无法解析域名 {domain}: {e}")