DrissionPage在linux环境下无法显示cloudflare的真人验证
Author: chaksonCreated Jul 23, 2025Updated Apr 20, 2026
DrissionPage在linux环境下,不管是否是无头模式,都无法显示cloudflare的真人验证,一样的代码,Windows就可以。
代码:
import time
import logging
import os
from CloudflareBypasser import CloudflareBypasser
from DrissionPage import ChromiumPage, ChromiumOptions
logging.basicConfig(
level=logging.INFO,
format='%(asctime)s - %(levelname)s - %(message)s',
handlers=[
logging.StreamHandler(),
logging.FileHandler('cloudflare_bypass.log', mode='w')
]
)
def get_chromium_options(browser_path: str, arguments: list) -> ChromiumOptions:
options = ChromiumOptions().auto_port()
options.set_paths(browser_path=browser_path)
for argument in arguments:
options.set_argument(argument)
return options
def take_screenshot(driver: ChromiumPage, filename: str = "screenshot.png"):
try:
driver.get_screenshot(path=filename, full_page=True)
logging.info(f"Screenshot saved as {filename}")
except Exception as e:
logging.error(f"Failed to take screenshot: {str(e)}")
def main():
isHeadless = True
if isHeadless:
from pyvirtualdisplay import Display
display = Display(visible=0, size=(1920, 1080))
display.start()
browser_path = os.getenv('CHROME_PATH', "/usr/bin/google-chrome")
arguments = [
"--no-sandbox",
"-no-first-run",
"-force-color-profile=srgb",
"-metrics-recording-only",
"-password-store=basic",
"-use-mock-keychain",
"-export-tagged-pdf",
"-no-default-browser-check",
"-disable-background-mode",
"-enable-features=NetworkService,NetworkServiceInProcess,LoadCryptoTokenExtension,PermuteTLSExtensions",
"-disable-features=FlashDeprecationWarning,EnablePasswordsAccountStorage",
"-deny-permission-prompts",
"-disable-gpu",
"-accept-lang=en-US",
]
options = get_chromium_options(browser_path, arguments)
driver = ChromiumPage(addr_or_opts=options)
try:
logging.info('Navigating to the demo page.')
driver.get('my url')
driver.run_js("window.scrollTo(0, document.body.scrollHeight);")
logging.info("Scrolled to the bottom of the page.")
time.sleep(5)
button = driver.ele('xpath://li/a')
button.click()
logging.info("Button clicked successfully!")
time.sleep(5)
button = driver.ele('xpath://button')
button.click(20, 20) # Click at coordinates (20, 20)
logging.info("Clicked at (20, 20) on the page.")
time.sleep(5)
driver.run_js("document.getElementById('anchor_typea').scrollIntoView();")
logging.info("Scrolled to the element with ID 'anchor_typea'.")
time.sleep(20)
logging.info("Enjoy the content!")
logging.info("Title of the page: %s", driver.title)
time.sleep(5)
logging.info("take_screenshot 0!")
take_screenshot(driver, "after_cf_bypass.png")
logging.info("take_screenshot 1!")
except Exception as e:
logging.error("An error occurred: %s", str(e))
finally:
logging.info('Closing the browser.')
driver.quit()
if isHeadless:
display.stop()
if __name__ == '__main__':
main()linux:
windows:
Source: g1879/DrissionPage