mirror of
https://github.com/FlareSolverr/FlareSolverr.git
synced 2025-06-09 12:57:12 +00:00
Support proxy in request and session cmds (#754)
This commit is contained in:
parent
4db85a2d0f
commit
efaa5f31b6
@ -179,7 +179,7 @@ def _cmd_request_post(req: V1RequestBase) -> V1ResponseBase:
|
|||||||
def _cmd_sessions_create(req: V1RequestBase) -> V1ResponseBase:
|
def _cmd_sessions_create(req: V1RequestBase) -> V1ResponseBase:
|
||||||
logging.debug("Creating new session...")
|
logging.debug("Creating new session...")
|
||||||
|
|
||||||
session, fresh = SESSIONS_STORAGE.create(session_id=req.session)
|
session, fresh = SESSIONS_STORAGE.create(session_id=req.session, proxy=req.proxy)
|
||||||
session_id = session.session_id
|
session_id = session.session_id
|
||||||
|
|
||||||
if not fresh:
|
if not fresh:
|
||||||
@ -236,7 +236,7 @@ def _resolve_challenge(req: V1RequestBase, method: str) -> ChallengeResolutionT:
|
|||||||
|
|
||||||
driver = session.driver
|
driver = session.driver
|
||||||
else:
|
else:
|
||||||
driver = utils.get_webdriver()
|
driver = utils.get_webdriver(req.proxy)
|
||||||
logging.debug('New instance of webdriver has been created to perform the request')
|
logging.debug('New instance of webdriver has been created to perform the request')
|
||||||
return func_timeout(timeout, _evil_logic, (req, driver, method))
|
return func_timeout(timeout, _evil_logic, (req, driver, method))
|
||||||
except FunctionTimedOut:
|
except FunctionTimedOut:
|
||||||
|
@ -25,7 +25,7 @@ class SessionsStorage:
|
|||||||
def __init__(self):
|
def __init__(self):
|
||||||
self.sessions = {}
|
self.sessions = {}
|
||||||
|
|
||||||
def create(self, session_id: Optional[str] = None, force_new: Optional[bool] = False) -> Tuple[Session, bool]:
|
def create(self, session_id: Optional[str] = None, proxyconf: Optional[dict] = None, force_new: Optional[bool] = False) -> Tuple[Session, bool]:
|
||||||
"""create creates new instance of WebDriver if necessary,
|
"""create creates new instance of WebDriver if necessary,
|
||||||
assign defined (or newly generated) session_id to the instance
|
assign defined (or newly generated) session_id to the instance
|
||||||
and returns the session object. If a new session has been created
|
and returns the session object. If a new session has been created
|
||||||
@ -44,7 +44,7 @@ class SessionsStorage:
|
|||||||
if self.exists(session_id):
|
if self.exists(session_id):
|
||||||
return self.sessions[session_id], False
|
return self.sessions[session_id], False
|
||||||
|
|
||||||
driver = utils.get_webdriver()
|
driver = utils.get_webdriver(proxyconf=proxyconf)
|
||||||
created_at = datetime.now()
|
created_at = datetime.now()
|
||||||
session = Session(session_id, driver, created_at)
|
session = Session(session_id, driver, created_at)
|
||||||
|
|
||||||
|
@ -36,7 +36,7 @@ def get_flaresolverr_version() -> str:
|
|||||||
return FLARESOLVERR_VERSION
|
return FLARESOLVERR_VERSION
|
||||||
|
|
||||||
|
|
||||||
def get_webdriver() -> WebDriver:
|
def get_webdriver(proxyconf: dict=None) -> WebDriver:
|
||||||
global PATCHED_DRIVER_PATH
|
global PATCHED_DRIVER_PATH
|
||||||
logging.debug('Launching web browser...')
|
logging.debug('Launching web browser...')
|
||||||
|
|
||||||
@ -55,6 +55,11 @@ def get_webdriver() -> WebDriver:
|
|||||||
options.add_argument('--ignore-certificate-errors')
|
options.add_argument('--ignore-certificate-errors')
|
||||||
options.add_argument('--ignore-ssl-errors')
|
options.add_argument('--ignore-ssl-errors')
|
||||||
|
|
||||||
|
if proxyconf:
|
||||||
|
proxy_url = proxyconf['url']
|
||||||
|
logging.debug("Using webdriver proxy: %s", proxy_url)
|
||||||
|
options.add_argument('--proxy-server=%s' % proxy_url)
|
||||||
|
|
||||||
# note: headless mode is detected (options.headless = True)
|
# note: headless mode is detected (options.headless = True)
|
||||||
# we launch the browser in head-full mode with the window hidden
|
# we launch the browser in head-full mode with the window hidden
|
||||||
windows_headless = False
|
windows_headless = False
|
||||||
|
Loading…
x
Reference in New Issue
Block a user