diff --git a/myUtils/login.py b/myUtils/login.py index 4437f99..90333a2 100644 --- a/myUtils/login.py +++ b/myUtils/login.py @@ -7,7 +7,24 @@ from myUtils.auth import check_cookie from utils.base_social_media import set_init_script import uuid from pathlib import Path -from conf import BASE_DIR, LOCAL_CHROME_HEADLESS +from conf import BASE_DIR, LOCAL_CHROME_HEADLESS, LOCAL_CHROME_PATH + +# 统一获取浏览器启动配置(防风控+引入本地浏览器) +def get_browser_options(): + options = { + 'headless': LOCAL_CHROME_HEADLESS, + 'args': [ + '--disable-blink-features=AutomationControlled', # 核心防爬屏蔽:去掉 window.navigator.webdriver 标签 + '--lang=zh-CN', + '--disable-infobars', + '--start-maximized' + ] + } + # 如果用户在 conf.py 里配置了本地 Chrome,就用本地的,这样成功率极高 + if LOCAL_CHROME_PATH: + options['executable_path'] = LOCAL_CHROME_PATH + + return options # 抖音登录 async def douyin_cookie_gen(id,status_queue): @@ -17,9 +34,7 @@ async def douyin_cookie_gen(id,status_queue): if page.url != original_url: url_changed_event.set() async with async_playwright() as playwright: - options = { - 'headless': LOCAL_CHROME_HEADLESS - } + options = get_browser_options() # Make sure to run headed. browser = await playwright.chromium.launch(**options) # Setup context however you like. diff --git a/utils/browser_hook.py b/utils/browser_hook.py new file mode 100644 index 0000000..7f82ce7 --- /dev/null +++ b/utils/browser_hook.py @@ -0,0 +1,17 @@ +from conf import LOCAL_CHROME_HEADLESS, LOCAL_CHROME_PATH + +def get_browser_options(): + options = { + 'headless': LOCAL_CHROME_HEADLESS, + 'args': [ + '--disable-blink-features=AutomationControlled', + '--lang=zh-CN', + '--disable-infobars', + '--start-maximized', + '--no-sandbox', + '--disable-web-security' + ] + } + if LOCAL_CHROME_PATH: + options['executable_path'] = LOCAL_CHROME_PATH + return options