from flask import Flask, request, jsonify from selenium import webdriver from selenium.webdriver.chrome.options import Options from selenium.webdriver.common.by import By from bs4 import BeautifulSoup import time app = Flask(__name__) def get_hidden_code(url): # Setup Selenium headless Chrome chrome_options = Options() chrome_options.add_argument("--headless=new") chrome_options.add_argument("--disable-gpu") chrome_options.add_argument("--no-sandbox") driver = webdriver.Chrome(options=chrome_options) token_found = [] try: driver.get(url) time.sleep(3) # wait for page load # Click the Start Challenge button if present try: start_button = driver.find_element(By.XPATH, "//button[contains(text(), 'Start Challenge')]") start_button.click() time.sleep(3) # wait for challenge to load except Exception as e: print("⚠️ Could not click Start Challenge button:", e) # Get updated HTML after interaction html = driver.page_source soup = BeautifulSoup(html, "html.parser") # Look for hidden elements for tag in soup.find_all(True): if tag.has_attr("style") and "display:none" in tag["style"]: token_found.append(tag.get_text(strip=True)) # Look for hidden inputs for hidden in soup.find_all("input", {"type": "hidden"}): if hidden.get("value"): token_found.append(hidden["value"]) # Try regex / text search for "Hidden Code" if "hidden code" in html.lower(): start = html.lower().find("hidden code") token_found.append(html[start:start+100]) driver.quit() return list(set(token_found)) or ["No hidden code found"] except Exception as e: driver.quit() return [f"Error: {str(e)}"] @app.route("/mission", methods=["POST"]) def mission(): data = request.json url = data.get("url") questions = data.get("questions", []) if not url: return jsonify({"error": "URL is required"}), 400 tokens = get_hidden_code(url) return jsonify({ "url_received": url, "questions_received": questions, "token_found": tokens }) if __name__ == "__main__": app.run(debug=True, host="0.0.0.0", port=5000)