finic

🦊 Finic

A fleet of stealth browsers at your fingertips.

License Issues

Finic provides browser infrastructure for developers building web scrapers, browser automations, and AI agents in Python. It does this by giving you a browser in the cloud you can control remotely using Playwright or Puppeteer (in just a few lines), or Selenium (with some work).

Finic is designed to be unopionated about the development process, and simply provide browser and network-level utilities to make sure your automations don’t get blocked.

Quickstart

git clone https://github.com/finic-ai/finic.git

Running Locally

Run the image locally the same as any other Docker container.

sudo docker-compose up --build

Once the container is running, you can connect to it like this.

CDP_URL = "ws://localhost:8000/ws"

async def main():
    print("Connecting to Browser...")
    async with async_playwright() as pw:
        browser = await pw.chromium.connect_over_cdp(CDP_URL)
        try:
            print("Connected! Navigating...")
            page = await browser.new_page()
            await page.goto("https://example.com", timeout=2 * 60 * 1000)
            print("Navigated! Scraping page content...")
            html = await page.content()
            print(html)
        finally:
            await browser.close()

asyncio.run(main())

Or run python testscript.py to test out the container.

If you want to use a Finic browser with an existing project, simply replace this line:

browser = playwright.chromium.launch(headless=False)

with this one: with this:

browser = playwright.chromium.connect_over_cdp("ws://localhost:8080/ws")