diff --git a/setup.py b/setup.py index f4989fb..654e176 100644 --- a/setup.py +++ b/setup.py @@ -27,9 +27,10 @@ def create_file_from_example(target: str, example: str) -> bool: def install_playwright_chrome(): - print("\n๐Ÿ› ๏ธ Playwright์˜ Chrome์„ ์„ค์น˜ ์ค‘์ž…๋‹ˆ๋‹ค...") + print("\n๐Ÿ› ๏ธ Playwright์˜ Chromium์„ ์„ค์น˜ ์ค‘์ž…๋‹ˆ๋‹ค...") + print("๐Ÿ‘‰ ์ด ์ž‘์—…์€ ์‹œ๊ฐ„์ด ๊ฑธ๋ฆด ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ž ์‹œ ๊ธฐ๋‹ค๋ ค์ฃผ์„ธ์š”.") try: - subprocess.run(['uv', 'run', 'playwright', 'install', 'chrome'], check=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE) + subprocess.run(['uv', 'run', 'playwright', 'install', 'chromium'], check=True) print("โœ… Playwright Chrome ์„ค์น˜ ์™„๋ฃŒ.") except subprocess.CalledProcessError as e: if "already" in e.stdout.decode(): @@ -107,12 +108,13 @@ async def setup_user_data(): initial_actions=initial_actions, browser_profile=BrowserProfile( disable_security=True, - stealth=True, + #stealth=True, headless=False, device_scale_factor=1, window_size={"width": 1600, "height": 900}, viewport={"width": 1600, "height": 900}, user_data_dir="./data/user_data", + ignore_default_args=['--enable-automation'], ) ) @@ -168,8 +170,8 @@ if __name__ == "__main__": print("=====================================================") # 3. Windows ์ธ์ฝ”๋”ฉ ๋ฌธ์ œ ํ•ด๊ฒฐ - i_dont_like_windows() - print("=====================================================") + #i_dont_like_windows() + #print("=====================================================") # 4. Setup User Data asyncio.run(setup_user_data()) @@ -179,4 +181,3 @@ if __name__ == "__main__": # setup_sensitive() print("=====================================================") print("๐ŸŽ‰ ์ดˆ๊ธฐ ์„ค์ •์ด ์™„๋ฃŒ๋˜์—ˆ์Šต๋‹ˆ๋‹ค! ์ด์ œ ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์‹คํ–‰ํ•  ์ค€๋น„๊ฐ€ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.") - print("๐ŸŽ‰ ์ดˆ๊ธฐ ์„ค์ •์ด ์™„๋ฃŒ๋˜์—ˆ์Šต๋‹ˆ๋‹ค! ์ด์ œ ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์‹คํ–‰ํ•  ์ค€๋น„๊ฐ€ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.") diff --git a/src/lib/browser_use/init_profile.py b/src/lib/browser_use/init_profile.py index bfc38df..8f62638 100644 --- a/src/lib/browser_use/init_profile.py +++ b/src/lib/browser_use/init_profile.py @@ -14,7 +14,9 @@ async def GetProfile(headless=False): if USER_DATA_DIR and os.path.isdir(USER_DATA_DIR): try: tmp_user_data_dir = tempfile.mkdtemp() - shutil.copytree(USER_DATA_DIR, tmp_user_data_dir, dirs_exist_ok=True) + if os.path.exists(tmp_user_data_dir): + shutil.rmtree(tmp_user_data_dir) + shutil.copytree(USER_DATA_DIR, tmp_user_data_dir, dirs_exist_ok=False, ignore_dangling_symlinks=True) user_data_dir = tmp_user_data_dir print(f"โœ… Copied user data dir to temporary location: {user_data_dir}") except Exception as e: @@ -23,12 +25,11 @@ async def GetProfile(headless=False): profile = BrowserProfile( # Security settings disable_security=True, - stealth=True, + #stealth=True, # Display settings headless=headless, device_scale_factor=1, window_size={"width": 1600, "height": 900}, - viewport={"width": 1600, "height": 900}, # Data persistence user_data_dir=user_data_dir, #storage_state=storage_state, @@ -36,6 +37,7 @@ async def GetProfile(headless=False): proxy={"server": proxy_url} if proxy_url else None, # Additional arguments args=get_browser_args(), + ignore_default_args=['--enable-automation'] ) return profile