diff --git a/src/dtos.py b/src/dtos.py index 1e9aace..428ee5b 100644 --- a/src/dtos.py +++ b/src/dtos.py @@ -18,6 +18,7 @@ class ChallengeResolutionResultT: class ChallengeResolutionT: status: str = None message: str = None + jsrespond: str = None result: ChallengeResolutionResultT = None def __init__(self, _dict): @@ -32,6 +33,7 @@ class V1RequestBase(object): cookies: list = None maxTimeout: int = None proxy: dict = None + execjs: str = None session: str = None session_ttl_minutes: int = None headers: list = None # deprecated v2.0.0, not used diff --git a/src/flaresolverr_service.py b/src/flaresolverr_service.py index a469bea..057cb02 100644 --- a/src/flaresolverr_service.py +++ b/src/flaresolverr_service.py @@ -387,7 +387,10 @@ def _evil_logic(req: V1RequestBase, driver: WebDriver, method: str) -> Challenge challenge_res.status = 200 # todo: fix, selenium not provides this info challenge_res.cookies = driver.get_cookies() challenge_res.userAgent = utils.get_user_agent(driver) - + if req.execjs: + r = driver.execute_script(req.execjs) + challenge_res.jsrespond = r + logging.info(f"executing {req.execjs} and got an output {r}") if not req.returnOnlyCookies: challenge_res.headers = {} # todo: fix, selenium not provides this info challenge_res.response = driver.page_source