mirror of
https://github.com/FlareSolverr/FlareSolverr.git
synced 2025-07-23 10:30:08 +00:00
parent
ce5369dd41
commit
795365dbe4
@ -10,6 +10,7 @@ from func_timeout import FunctionTimedOut, func_timeout
|
||||
from selenium.common import TimeoutException
|
||||
from selenium.webdriver.chrome.webdriver import WebDriver
|
||||
from selenium.webdriver.common.by import By
|
||||
from selenium.webdriver.common.keys import Keys
|
||||
from selenium.webdriver.support.expected_conditions import (
|
||||
presence_of_element_located, staleness_of, title_is)
|
||||
from selenium.webdriver.common.action_chains import ActionChains
|
||||
@ -255,18 +256,9 @@ def _resolve_challenge(req: V1RequestBase, method: str) -> ChallengeResolutionT:
|
||||
def click_verify(driver: WebDriver):
|
||||
try:
|
||||
logging.debug("Try to find the Cloudflare verify checkbox...")
|
||||
iframe = driver.find_element(By.XPATH, "//iframe[starts-with(@id, 'cf-chl-widget-')]")
|
||||
driver.switch_to.frame(iframe)
|
||||
checkbox = driver.find_element(
|
||||
by=By.XPATH,
|
||||
value='//*[@id="content"]/div/div/label/input',
|
||||
)
|
||||
if checkbox:
|
||||
actions = ActionChains(driver)
|
||||
actions.move_to_element_with_offset(checkbox, 5, 7)
|
||||
actions.click(checkbox)
|
||||
actions.perform()
|
||||
logging.debug("Cloudflare verify checkbox found and clicked!")
|
||||
actions = ActionChains(driver)
|
||||
actions.pause(5).send_keys(Keys.TAB).pause(1).send_keys(Keys.SPACE).perform()
|
||||
logging.debug("Cloudflare verify checkbox found and clicked!")
|
||||
except Exception:
|
||||
logging.debug("Cloudflare verify checkbox not found on the page.")
|
||||
finally:
|
||||
@ -290,22 +282,6 @@ def click_verify(driver: WebDriver):
|
||||
time.sleep(2)
|
||||
|
||||
|
||||
def get_correct_window(driver: WebDriver) -> WebDriver:
|
||||
if len(driver.window_handles) > 1:
|
||||
for window_handle in driver.window_handles:
|
||||
driver.switch_to.window(window_handle)
|
||||
current_url = driver.current_url
|
||||
if not current_url.startswith("devtools://devtools"):
|
||||
return driver
|
||||
return driver
|
||||
|
||||
|
||||
def access_page(driver: WebDriver, url: str) -> None:
|
||||
driver.get(url)
|
||||
driver.start_session()
|
||||
driver.start_session() # required to bypass Cloudflare
|
||||
|
||||
|
||||
def _evil_logic(req: V1RequestBase, driver: WebDriver, method: str) -> ChallengeResolutionT:
|
||||
res = ChallengeResolutionT({})
|
||||
res.status = STATUS_OK
|
||||
@ -317,8 +293,7 @@ def _evil_logic(req: V1RequestBase, driver: WebDriver, method: str) -> Challenge
|
||||
if method == 'POST':
|
||||
_post_request(req, driver)
|
||||
else:
|
||||
access_page(driver, req.url)
|
||||
driver = get_correct_window(driver)
|
||||
driver.get(req.url)
|
||||
|
||||
# set cookies if required
|
||||
if req.cookies is not None and len(req.cookies) > 0:
|
||||
@ -330,8 +305,7 @@ def _evil_logic(req: V1RequestBase, driver: WebDriver, method: str) -> Challenge
|
||||
if method == 'POST':
|
||||
_post_request(req, driver)
|
||||
else:
|
||||
access_page(driver, req.url)
|
||||
driver = get_correct_window(driver)
|
||||
driver.get(req.url)
|
||||
|
||||
# wait for the page
|
||||
if utils.get_config_log_html():
|
||||
@ -451,5 +425,3 @@ def _post_request(req: V1RequestBase, driver: WebDriver):
|
||||
</body>
|
||||
</html>"""
|
||||
driver.get("data:text/html;charset=utf-8,{html_content}".format(html_content=html_content))
|
||||
driver.start_session()
|
||||
driver.start_session() # required to bypass Cloudflare
|
||||
|
Loading…
x
Reference in New Issue
Block a user