|
45 | 45 | PERSISTENT_CONTEXT = os.getenv("PERSISTENT_CONTEXT", 'False').lower() in ('true', '1', 't') |
46 | 46 | PATH_CONTEXT = "/context" |
47 | 47 |
|
| 48 | +REMOTE_CDP = os.getenv('REMOTE_CDP') |
| 49 | + |
48 | 50 | # Global browser and context instances |
49 | 51 | browser: Browser = None |
50 | 52 | context: BrowserContext = None |
@@ -170,46 +172,50 @@ async def lifespan(app: FastAPI): |
170 | 172 | # Startup logic |
171 | 173 | playwright = await async_playwright().start() |
172 | 174 |
|
173 | | - if PERSISTENT_CONTEXT: |
174 | | - print("Launching Chrome with persistent context.") |
175 | | - context = await playwright.chromium.launch_persistent_context( |
176 | | - user_data_dir=PATH_CONTEXT, |
177 | | - headless=True, |
178 | | - channel="chrome", |
179 | | - args=[ |
180 | | - '--no-sandbox', |
181 | | - '--disable-setuid-sandbox', |
182 | | - '--disable-dev-shm-usage', |
183 | | - '--disable-accelerated-2d-canvas', |
184 | | - '--no-first-run', |
185 | | - '--no-zygote', |
186 | | - '--single-process', |
187 | | - '--disable-gpu', |
188 | | - '--no-default-browser-check', |
189 | | - '--disable-infobars' |
190 | | - ], |
191 | | - **context_options |
192 | | - ) |
| 175 | + if REMOTE_CDP: |
| 176 | + browser = await playwright.chromium.connect_over_cdp(f"wss://{REMOTE_CDP}") |
| 177 | + context = browser.contexts[0] |
193 | 178 | else: |
194 | | - print("Launching Chrome with temporary context.") |
195 | | - browser = await playwright.chromium.launch( |
196 | | - headless=True, |
197 | | - channel="chrome", |
198 | | - args=[ |
199 | | - '--no-sandbox', |
200 | | - '--disable-setuid-sandbox', |
201 | | - '--disable-dev-shm-usage', |
202 | | - '--disable-accelerated-2d-canvas', |
203 | | - '--no-first-run', |
204 | | - '--no-zygote', |
205 | | - '--single-process', |
206 | | - '--disable-gpu', |
207 | | - '--no-default-browser-check', |
208 | | - '--no-startup-window', |
209 | | - '--disable-infobars' |
210 | | - ] |
211 | | - ) |
212 | | - context = await browser.new_context(**context_options) |
| 179 | + if PERSISTENT_CONTEXT: |
| 180 | + print("Launching Chrome with persistent context.") |
| 181 | + context = await playwright.chromium.launch_persistent_context( |
| 182 | + user_data_dir=PATH_CONTEXT, |
| 183 | + headless=True, |
| 184 | + channel="chrome", |
| 185 | + args=[ |
| 186 | + '--no-sandbox', |
| 187 | + '--disable-setuid-sandbox', |
| 188 | + '--disable-dev-shm-usage', |
| 189 | + '--disable-accelerated-2d-canvas', |
| 190 | + '--no-first-run', |
| 191 | + '--no-zygote', |
| 192 | + '--single-process', |
| 193 | + '--disable-gpu', |
| 194 | + '--no-default-browser-check', |
| 195 | + '--disable-infobars' |
| 196 | + ], |
| 197 | + **context_options |
| 198 | + ) |
| 199 | + else: |
| 200 | + print("Launching Chrome with temporary context.") |
| 201 | + browser = await playwright.chromium.launch( |
| 202 | + headless=True, |
| 203 | + channel="chrome", |
| 204 | + args=[ |
| 205 | + '--no-sandbox', |
| 206 | + '--disable-setuid-sandbox', |
| 207 | + '--disable-dev-shm-usage', |
| 208 | + '--disable-accelerated-2d-canvas', |
| 209 | + '--no-first-run', |
| 210 | + '--no-zygote', |
| 211 | + '--single-process', |
| 212 | + '--disable-gpu', |
| 213 | + '--no-default-browser-check', |
| 214 | + '--no-startup-window', |
| 215 | + '--disable-infobars' |
| 216 | + ] |
| 217 | + ) |
| 218 | + context = await browser.new_context(**context_options) |
213 | 219 |
|
214 | 220 |
|
215 | 221 | if RESOURCES_BLOCKED: |
|
0 commit comments