Skip to main content

logo brozzler

“browser” | “crawler” = “brozzler”

Brozzler is a distributed web crawler (爬虫) that uses a real browser (Chrome or Chromium) to fetch pages and embedded URLs and to extract links. It employs yt-dlp (formerly youtube-dl) to enhance media capture capabilities and rethinkdb to manage crawl state.

Brozzler is designed to work in conjunction with warcprox for web archiving.

Requirements

  • Python 3.9 or later

  • RethinkDB deployment

  • Chromium or Google Chrome >= version 64

Note: The browser requires a graphical environment to run. When brozzler is run on a server, this may require deploying some additional infrastructure, typically X11. Xvnc4 and Xvfb are X11 variants that are suitable for use on a server, because they don’t display anything to a physical screen. The vagrant configuration in the brozzler repository has an example setup using Xvnc4. (When last tested, chromium on Xvfb did not support screenshots, so Xvnc4 is preferred at this time.)

Getting Started

The simplest way to get started with Brozzler is to use the brozzle-page command-line utility to pass in a single URL to crawl. You can also add a new job defined with a YAML file (see job-const.rst) and start a local Brozzler worker for a more complex crawl.

Mac instructions:

# install and start rethinkdb
brew install rethinkdb
# no brew? try rethinkdb's installer: https://www.rethinkdb.com/docs/install/osx/
rethinkdb &>>rethinkdb.log &

# optional: create a virtualenv
python -m venv .venv

# install brozzler with rethinkdb extra
pip install brozzler[rethinkdb]

# crawl a single site
brozzle-page https://example.org

# or enqueue a job and start brozzler-worker
brozzler-new-job job1.yml
brozzler-worker

At this point Brozzler will start archiving your site.

Running Brozzler locally in this manner demonstrates the full Brozzler archival crawling workflow, but does not take advantage of Brozzler’s distributed nature.

Installation and Usage

To install brozzler only:

pip install brozzler  # in a virtualenv if desired

Launch one or more workers: [*]

brozzler-worker --warcprox-auto

Submit jobs:

brozzler-new-job myjob.yaml

Submit sites not tied to a job:

brozzler-new-site --time-limit=600 https://example.org/

Job Configuration

Brozzler jobs are defined using YAML files. Options may be specified either at the top-level or on individual seeds. At least one seed URL must be specified, however everything else is optional. For details, see job-conf.rst.

id: myjob
time_limit: 60 # seconds
ignore_robots: false
warcprox_meta: null
metadata: {}
seeds:
  - url: https://one.example.org/
  - url: https://two.example.org/
    time_limit: 30
  - url: https://three.example.org/
    time_limit: 10
    ignore_robots: true
    scope:
      surt: https://(org,example,

Brozzler Dashboard

Brozzler comes with a rudimentary web application for viewing crawl job status. To install the brozzler with dependencies required to run this app, run

pip install brozzler[dashboard]

To start the app, run

brozzler-dashboard

At this point Brozzler Dashboard will be accessible at http://localhost:8000/.

Brozzler-Dashboard.png

See brozzler-dashboard --help for configuration options.

License

Copyright 2015-2025 Internet Archive

Licensed under the Apache License, Version 2.0 (the “License”); you may not use this software except in compliance with the License. You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an “AS IS” BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.

Metadata

Release files for brozzler 1.9.10

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for brozzler 1.9.10
File Size Uploaded Provenance Actions
brozzler-1.9.10.tar.gz 105.0 kB Without provenance Details for brozzler-1.9.10.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for brozzler 1.9.10
File Interpreter ABI Platform Actions
brozzler-1.9.10-py3-none-any.whl Python 3 none any Details for brozzler-1.9.10-py3-none-any.whl

Total release size: 205.9 kB

Release files / brozzler-1.9.10.tar.gz

Download URL brozzler-1.9.10.tar.gz
Size 105.0 kB
Tags Source
SHA-256 checksum
How to use checksums
1a1eda76ab74e9e18c7ee0308b19b319fb5ed78d8ddb35b3be721556aa96328f
BLAKE2b-256 checksum
How to use checksums
d1506ae38947649c242d0c60793e035078a65b054a91b7bfbfad47e2358d0d5f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via uv/0.13.7 {"installer":{"name":"uv","version":"0.13.7","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Release files / brozzler-1.9.10-py3-none-any.whl

Download URL brozzler-1.9.10-py3-none-any.whl
Size 100.8 kB
Tags Python 3
SHA-256 checksum
How to use checksums
1649549fbd5ae771f4e6bede91da0cb6a2fdbfcb2e63309fe3802864fdf64d54
BLAKE2b-256 checksum
How to use checksums
91419506b49725a461193c73a7a8977a48ea4e50a605b2e1c14e8cd6ab9ab688
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via uv/0.13.7 {"installer":{"name":"uv","version":"0.13.7","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Security for brozzler 1.9.10

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Release history Release notifications | RSS feed

This release

1.9.10 This release

2 release files No provenance

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page