zhou12189108 commited on
Commit
3dee5a4
·
verified ·
1 Parent(s): cd38c4a

Update api.py

Browse files
Files changed (1) hide show
  1. api.py +71 -63
api.py CHANGED
@@ -1,64 +1,72 @@
1
- import os
2
- from utils import solver
3
- import time
4
- from playwright.sync_api import sync_playwright
5
- import colorama
6
- from flask import Flask, request, jsonify
7
-
8
- app = Flask(__name__)
9
-
10
-
11
- def solve_start(url, site_key):
12
- with sync_playwright() as playwright:
13
- s = solver.Solver(playwright, headless=True)
14
- while True:
15
- current_time = time.time()
16
- captcha = s.solve(url, site_key,invisible=False)
17
- if captcha == "failed":
18
- print(f"{colorama.Fore.WHITE}[{colorama.Fore.RED}-{colorama.Fore.WHITE}] Failed to solve captcha")
19
- continue
20
- print(
21
- f"{colorama.Fore.WHITE}[{colorama.Fore.GREEN}+{colorama.Fore.WHITE}] Solved {captcha[0:40]} in {colorama.Fore.GREEN}{time.time() - current_time}{colorama.Fore.WHITE} seconds")
22
- return captcha
23
-
24
-
25
- def get_token():
26
- default_token = "init_token"
27
- if os.path.exists("token"):
28
- return open("token", "r").read().strip()
29
- return default_token
30
-
31
-
32
- def check_request(required_data, data):
33
- token = get_token()
34
- if not data or any(key not in data for key in required_data):
35
- print("Error:Invalid Request Data\n" + str(data))
36
- return False
37
- if data["token"] != token:
38
- print("Error:Invalid Token\n" + str(data))
39
- return False
40
- return True
41
-
42
-
43
- @app.route("/update/token", methods=["POST"])
44
- def update_token():
45
- require_data = ["token", "new_token"]
46
- data = request.get_json(force=True, silent=True)
47
- if not check_request(require_data, data):
48
- return jsonify(msg="Unauthorized Request"), 403
49
- token = open("token", "w+")
50
- token.write(data["new_token"])
51
- token.close()
52
- return jsonify(msg="Token updated successfully", success=True)
53
-
54
-
55
- @app.route('/solver', methods=["POST"])
56
- def get_token_api():
57
- require_data = ["token", "url", "site_key"]
58
- data = request.get_json(force=True, silent=True)
59
- if not check_request(require_data, data):
60
- return jsonify(msg="Unauthorized Request"), 403
61
- token = solve_start(data["url"], data["site_key"])
62
- return jsonify(token=token)
63
-
 
 
 
 
 
 
 
 
64
  app.run(host="0.0.0.0", port=8000)
 
1
+ import os
2
+ from utils import solver
3
+ import time
4
+ from playwright.sync_api import sync_playwright
5
+ import colorama
6
+ from flask import Flask, request, jsonify
7
+
8
+ app = Flask(__name__)
9
+
10
+ def get_ipaddr():
11
+ if request.access_route:
12
+ print(request.access_route[0])
13
+ return request.access_route[0]
14
+ else:
15
+ return request.remote_addr or '127.0.0.1'
16
+
17
+ def solve_start(url, site_key):
18
+ with sync_playwright() as playwright:
19
+ s = solver.Solver(playwright, headless=True)
20
+ while True:
21
+ current_time = time.time()
22
+ captcha = s.solve(url, site_key,invisible=False)
23
+ if captcha == "failed":
24
+ print(f"{colorama.Fore.WHITE}[{colorama.Fore.RED}-{colorama.Fore.WHITE}] Failed to solve captcha")
25
+ continue
26
+ print(
27
+ f"{colorama.Fore.WHITE}[{colorama.Fore.GREEN}+{colorama.Fore.WHITE}] Solved {captcha[0:40]} in {colorama.Fore.GREEN}{time.time() - current_time}{colorama.Fore.WHITE} seconds")
28
+ return captcha
29
+
30
+
31
+ def get_token():
32
+ default_token = "init_token"
33
+ if os.path.exists("token"):
34
+ return open("token", "r").read().strip()
35
+ return default_token
36
+
37
+
38
+ def check_request(required_data, data):
39
+ token = get_token()
40
+ if not data or any(key not in data for key in required_data):
41
+ print("Error:Invalid Request Data\n" + str(data))
42
+ return False
43
+ if data["token"] != token:
44
+ print("Error:Invalid Token\n" + str(data))
45
+ return False
46
+ return True
47
+
48
+
49
+ @app.route("/update/token", methods=["POST"])
50
+ def update_token():
51
+ print(get_ipaddr())
52
+ require_data = ["token", "new_token"]
53
+ data = request.get_json(force=True, silent=True)
54
+ if not check_request(require_data, data):
55
+ return jsonify(msg="Unauthorized Request"), 403
56
+ token = open("token", "w+")
57
+ token.write(data["new_token"])
58
+ token.close()
59
+ return jsonify(msg="Token updated successfully", success=True)
60
+
61
+
62
+ @app.route('/solver', methods=["POST"])
63
+ def get_token_api():
64
+ print(get_ipaddr())
65
+ require_data = ["token", "url", "site_key"]
66
+ data = request.get_json(force=True, silent=True)
67
+ if not check_request(require_data, data):
68
+ return jsonify(msg="Unauthorized Request"), 403
69
+ token = solve_start(data["url"], data["site_key"])
70
+ return jsonify(token=token)
71
+
72
  app.run(host="0.0.0.0", port=8000)