From 589ea325de7dd30c064588f15c3cd8540ccae74b Mon Sep 17 00:00:00 2001 From: Michel Roux Date: Thu, 5 Jan 2023 15:23:22 +0100 Subject: [PATCH] FlareSolverr v3 --- pynyaata/session.py | 71 +++++++++++++++------------------------------ 1 file changed, 23 insertions(+), 48 deletions(-) diff --git a/pynyaata/session.py b/pynyaata/session.py index d1ff256..9ad1122 100644 --- a/pynyaata/session.py +++ b/pynyaata/session.py @@ -2,7 +2,7 @@ from io import BytesIO from os import getenv from urllib import parse -from requests import RequestException, Response, Session, post +from requests import Response, Session, post CLOUDPROXY_ENDPOINT = getenv("CLOUDPROXY_ENDPOINT") @@ -13,67 +13,42 @@ class FlareRequests(Session): if not CLOUDPROXY_ENDPOINT: return super().request(method, url, params, data, **kwargs) - sessions = post(CLOUDPROXY_ENDPOINT, json={"cmd": "sessions.list"}).json() - - if "sessions" in sessions and len(sessions["sessions"]) > 0: - FLARESESSION = sessions["sessions"][0] - else: - response = post(CLOUDPROXY_ENDPOINT, json={"cmd": "sessions.create"}) - session = response.json() - - if "session" in session: - FLARESESSION = session["session"] - else: - raise RequestException(response) - if params: url += "&" if len(url.split("?")) > 1 else "?" url = f"{url}{parse.urlencode(params)}" post_data = { "cmd": f"request.{method.lower()}", - "session": FLARESESSION, "url": url, } if data: post_data["postData"] = parse.urlencode(data) - try: - response = post( - CLOUDPROXY_ENDPOINT, - json=post_data, - ) + response = post( + CLOUDPROXY_ENDPOINT, + json=post_data, + ) - solution = response.json() + content = response.json() - if "solution" in solution: - if "content-type" in solution["solution"]["headers"]: - content_type = solution["solution"]["headers"][ - "content-type" - ].split(";") - if len(content_type) > 1: - charset = content_type[1].split("=") - if len(charset) > 1: - encoding = charset[1] + if "solution" in content: + solution = content["solution"] + if "content-type" in solution["headers"]: + content_type = solution["headers"]["content-type"].split(";") + if len(content_type) > 1: + charset = content_type[1].split("=") + if len(charset) > 1: + encoding = charset[1] - resolved = Response() + resolved = Response() - resolved.status_code = solution["solution"]["status"] - resolved.headers = solution["solution"]["headers"] - resolved.raw = BytesIO(solution["solution"]["response"].encode()) - resolved.url = url - resolved.encoding = encoding or None - resolved.reason = solution["status"] - resolved.cookies = solution["solution"]["cookies"] + resolved.status_code = solution["status"] + resolved.headers = solution["headers"] + resolved.raw = BytesIO(solution["response"].encode()) + resolved.url = url + resolved.encoding = encoding or None + resolved.reason = content["status"] + resolved.cookies = solution["cookies"] - return resolved - - raise RequestException(response) - except RequestException: - session = post( - CLOUDPROXY_ENDPOINT, - json={"cmd": "sessions.destroy", "session": FLARESESSION}, - ) - - raise RequestException(solution) + return resolved