Hacktoberfest 2026: le issue che i maintainer hanno segnato per ottobre, aperte e adatte ai principianti. Sfoglia le issue Hacktoberfest

[Bug]: Browser hangs indefinitely on WSL when system proxy is required

Aperta
#1,930 3 commenti 0 reazioni 0 assegnatari Vedi su GitHub

I maintainer di solito rispondono entro 1 giorno

@nightcityblade ci sta già lavorando.

Dal 14/6/2026.

  • #2013 di @nightcityblade — aperta

Valutazione

Difficoltà
4/5
Tempo stimato
3-5 giorni
Idoneità per principianti
45/100
Tipo di issue
Bug
Chiarezza
Abbastanza chiara
Stato di attività
Tranquilla
Stack tecnologico
playwright, python

Direzione di ricerca

Start with the AsyncWebCrawler and BrowserConfig browser-launch path, then compare it with the working Playwright launch using proxy configuration. Reproduce the WSL2 case from the issue and verify that a crawl of https://example.com completes when a proxy is required, including the proxy and extra_args configurations.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Descrizione

❓ Question
crawl4ai version

0.8.6

Expected Behavior

When proxy or proxy_config is set in BrowserConfig, crawl4ai should
successfully launch Chromium with the proxy and complete the crawl.

Current Behavior

On WSL2 where a proxy is required for internet access, AsyncWebCrawler hangs
indefinitely after printing "[INIT].... → Crawl4AI 0.8.6" and never completes.
Setting proxy via BrowserConfig(proxy=...), BrowserConfig(proxy_config=...),
or extra_args=["--proxy-server=..."] all result in the same hang.

Is this reproducible?

Yes

Inputs Causing the Bug
Any URL requiring internet access (e.g. https://example.com) when running on 
WSL2 where Chrome cannot connect to the internet directly.
Steps to Reproduce
1. Install crawl4ai on WSL2:
   pip install crawl4ai
   crawl4ai-setup

2. Verify that Python requests work fine with proxy (direct Chrome cannot reach internet):
   HOST_IP=$(ip route | awk '/default/ {print $3}')
   http_proxy=http://$HOST_IP:7892 python -c "import requests; print(requests.get('https://www.google.com', timeout=15).status_code)"
   # Output: 200

3. Verify that plain Playwright works fine with proxy:
   python -c "
   from playwright.sync_api import sync_playwright
   p = sync_playwright().start()
   b = p.chromium.launch()
   print('OK')
   b.close()
   p.stop()
   "
   # Output: OK

4. Run a basic crawl4ai crawl (no proxy):
   python -c "
   import asyncio
   from crawl4ai import AsyncWebCrawler
   async def test():
       async with AsyncWebCrawler() as crawler:
           result = await crawler.arun('https://example.com')
           print(result.success)
   asyncio.run(test())
   "
   # Hangs forever at: [INIT].... → Crawl4AI 0.8.6

5. Try with proxy set in BrowserConfig:
   python -c "
   import asyncio
   from crawl4ai import AsyncWebCrawler, BrowserConfig
   async def test():
       config = BrowserConfig(proxy='http://172.29.240.1:7892')
       async with AsyncWebCrawler(config=config) as crawler:
           result = await crawler.arun('https://example.com')
           print(result.success)
   asyncio.run(test())
   "
   # Also hangs forever at: [INIT].... → Crawl4AI 0.8.6

6. Confirmed root cause: crawl4ai uses subprocess.Popen to launch Chrome 
   without passing proxy env vars, so Chrome cannot reach the internet on WSL2.
   Plain Playwright with proxy={"server": ...} works correctly.
Code snippets
# Hangs forever
import asyncio
from crawl4ai import AsyncWebCrawler, BrowserConfig, CrawlerRunConfig

async def main():
    config = BrowserConfig(proxy="http://172.29.240.1:7892")
    async with AsyncWebCrawler(config=config) as crawler:
        result = await crawler.arun("https://example.com")

asyncio.run(main())

# Workaround: launch browser manually via Playwright and connect via CDP
import subprocess
from playwright.async_api import async_playwright
from crawl4ai import AsyncWebCrawler, BrowserConfig, CrawlerRunConfig

HOST_IP = subprocess.check_output(
    "ip route | awk '/default/ {print $3}'", shell=True).decode().strip()

async def main():
    async with async_playwright() as p:
        browser = await p.chromium.launch(
            headless=True,
            args=["--no-sandbox", "--disable-dev-shm-usage",
                  "--remote-debugging-port=9222"],
            proxy={"server": f"http://{HOST_IP}:7892"}
        )
        config = BrowserConfig(cdp_url="http://localhost:9222")
        async with AsyncWebCrawler(config=config) as crawler:
            result = await crawler.arun("https://example.com",
                config=CrawlerRunConfig(page_timeout=15000))
            print(result.success)
        await browser.close()

asyncio.run(main())
OS

OS: Windows 11 + WSL2 (Ubuntu 24.04)

Python version

3.12

Browser

Chromium (crawl4ai managed)

Browser version

Google Chrome for Testing 145.0.7632.6

Error logs & Screenshots (if applicable)

No response

Lingua principale
Python
Stelle
85.4k
Fork
8.9k
Merge medio
5g 7h
PR unite (30g)
23

Preparare l'ambiente

Come iniziare

  1. Leggi tutta la issue e poi la guida ai contributi del progetto.
  2. Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
  3. Fai un fork del repository e lavora su un branch.
  4. Apri una pull request che faccia riferimento al numero della issue.

Altre issue di unclecode/crawl4ai

Tutte le issue di unclecode/crawl4ai

Issue simili

Altre issue su Python

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.