Spaces:
Running
Running
import os | |
from utils import solver | |
import time | |
from playwright.sync_api import sync_playwright | |
import colorama | |
from flask import Flask, request, jsonify | |
app = Flask(__name__) | |
def get_ipaddr(): | |
if request.access_route: | |
print(request.access_route[0]) | |
return request.access_route[0] | |
else: | |
return request.remote_addr or '127.0.0.1' | |
def solve_start(url, site_key): | |
with sync_playwright() as playwright: | |
s = solver.Solver(playwright, headless=True) | |
while True: | |
current_time = time.time() | |
captcha = s.solve(url, site_key,invisible=False) | |
if captcha == "failed": | |
print(f"{colorama.Fore.WHITE}[{colorama.Fore.RED}-{colorama.Fore.WHITE}] Failed to solve captcha") | |
continue | |
print( | |
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") | |
return captcha | |
def get_token(): | |
default_token = "init_token" | |
if os.path.exists("token"): | |
return open("token", "r").read().strip() | |
return default_token | |
def check_request(required_data, data): | |
token = get_token() | |
if not data or any(key not in data for key in required_data): | |
print("Error:Invalid Request Data\n" + str(data)) | |
return False | |
if data["token"] != token: | |
print("Error:Invalid Token\n" + str(data)) | |
return False | |
return True | |
def update_token(): | |
print(get_ipaddr()) | |
require_data = ["token", "new_token"] | |
data = request.get_json(force=True, silent=True) | |
if not check_request(require_data, data): | |
return jsonify(msg="Unauthorized Request"), 403 | |
token = open("token", "w+") | |
token.write(data["new_token"]) | |
token.close() | |
return jsonify(msg="Token updated successfully", success=True) | |
def ping(): | |
return "pong" | |
def get_token_api(): | |
print(get_ipaddr()) | |
require_data = ["token", "url", "site_key"] | |
data = request.get_json(force=True, silent=True) | |
if not check_request(require_data, data): | |
return jsonify(msg="Unauthorized Request"), 403 | |
token = solve_start(data["url"], data["site_key"]) | |
return jsonify(token=token) | |
app.run(host="0.0.0.0", port=8000) |