Releases: ail-project/lacus
v1.16.0
v1.15.0 - GeekWeek X
New Feature
This releases adds support for Wireguard VPN config files using wireproxy.
In order to use it, you need to install wireproxy, and set the path to the wireproxy executable file in $LACUS_HOME/config/generic.json
, key wireproxy_path
.
Lacus accepts any valid wireguard configuration file in $LACUS_HOME/config/<Name>.conf
. The file is automatically configured for wireproxy, and an instance is launched. Wireproxy exposes a health endpoint, which Lacus checks regularly. If a proxy stops responding for too long, it is automatically disabled.
Once Lacus is running, you can add/remove any new wireguard proxy configuration file in $LACUS_HOME/config
, the file will be detected, configured, and launched (or stopped). Note that the file name must be <Name>.conf
.
Important Note: Any manual change in the wireproxy config files ($LACUS_HOME/config/<Name>.conf
) once they have been configured is not allowed and will be reverted. The only config file you can edit is $LACUS_HOME/config/proxies.json
, where you can add a description and anything you want in the meta
key.
The example below is showing a config for Tor (with the default socks5 interface) and a proxy existing in the Netherlands (with wireproxy). Changing the proxy_url
for a wireproxy config is not recommended, but it will be reflected in the wireproxy config file.
{
"Tor": {
"description": "Trigger the capture via the tor network.",
"meta": {
"provider": "Tor Project"
},
"proxy_url": "socks5://127.0.0.1:9050"
},
"Netherlands": {
"description": "Proxy for Netherlands",
"dns_resolver": "10.2.0.1",
"meta": {
"provider": "My wireguard config provider"
},
"proxy_url": "socks5://127.0.0.1:25310"
}
}
API
The proxies are exposed in the Lacus API (https://<Lacushost>/proxies
):
{
"Netherlands": {
"description": "Proxy for Netherlands",
"meta": {
"provider": "wireguard"
}
},
"Tor": {
"description": "Trigger the capture via the tor network.",
"meta": {
"provider": "Tor Project"
}
}
}
As you can see, the proxy_url
is not in the response because if a proxy name (Netherlands
, Tor
) is passed in the proxy
key when triggering a capture, Lacus automatically replaces it with the relevant URL.
Full Changelog: v1.14.0...v1.15.0
v1.14.0
New Feature
- Pre-configure proxies for the lookyloo instance (config example for:
config/proxies.json
)
{
"Tor": {
"proxy_url": "socks5://127.0.0.1:9050",
"description": "Trigger the capture via the tor network.",
"meta": {
"provider": "Tor Project"
}
},
"US": {
"proxy_url": "socks5://127.0.0.1:32321",
"dns_resolver": "1.1.1.1",
"description": "Trigger the capture via a Socks5 proxy in the US.",
"meta": {
"provider": "My own stash of Proxies"
}
}
}
- Expose the proxies in the API (description and meta keys only)
What's Changed
- Introduce dockerfile and docker-compose by @nicolalandro in #46
New Contributors
- @nicolalandro made their first contribution in #46
Full Changelog: v1.13.1...v1.14.0
v1.13.1 - Hackathon release
- Add support for storage state in the query, and in the response
What's Changed
New Contributors
Full Changelog: v1.13.0...v1.13.1
v1.13.0
Most importantly, lacus has a logo now
New features
- Support for captures with a headed browser (setting
allow_headed
). Only possible if lacus is running in a graphical environment. (see below for details) - Expose the results expiration timeout (setting
expire_results
to a lower value reduces the memory use if you have many captures)
Changes
- Attempt to stop stuck captures more aggressively
- Require Poetry 2.1
- Use latest version of playwright (v1.50)
- Lookyloo/PlaywrightCapture@v1.27.0...v1.28.0
- ail-project/LacusCore@v1.12.0...v1.13.0
Full Changelog: v1.12.0...v1.13.0
Notes for headed captures
The classical use of Lacus is to have it running on a server with no graphical interface (no X/Wayland server). The capture with Playwright uses a headless browser, runs some interactions on the page (see PlaywrightCapture for details), and finishes after a certain amount of time and/or no traffic. This method is good enough most of the time, but all the interactions on the page are predefined and cannot be modified by the user triggering the capture.
In order to use the headed option, you need the following:
- The configuration setting
"allow_headed" = True
inconfig/generic.json
- Lacus installed on a machine with a graphical interface
- Pass
headless
set toFalse
in the capture settings - Optionally
general_timeout_in_sec
set to the amount of time you want to interact with the page (it is set to 90 by default)
The headed capture mode opens a full browser configured with the settings passed to the capture, but it won't run the predefined interactions. Instead, it lets the user interact with the page for a set amount of time (general_timeout_in_sec
), stops the capture, and store the result as usual. It is mostly helpful to manually bypass captchas and other techniques used by websites to detect bots.
v1.12.0
This release requires some system upgrades:
- Valkey 8.0+
- Python 3.9+
Lacus changes
Full Changelog: v1.11.0...v1.12.0
- Optionally disable JavaScript during a capture
- Optionally configure the number of retries in case a capture fails (configurable globally, and for each capture)
LacusCore changes
Full Changelog: ail-project/LacusCore@v1.11.0...v1.12.0
PlaywrightCapture changes
Full Changelog: Lookyloo/PlaywrightCapture@v1.26.0...v1.27.0
v1.11.0
Lacus changes
Full Changelog: v1.10.0...v1.11.0
- Validate capture settings with pydantic & log accordingly
- New controller to stop/restart scripts individually
- Use valkey instead of redis by default
- Bump all dependencies
LacusCore changes
Full Changelog: ail-project/LacusCore@v1.10.0...v1.11.0
- Improve DNS resolving
- Enable new chromium headless by default
- Capture favicons by default
- Improve typing, use Pydantic
PlaywrightCapture changes
Full Changelog: Lookyloo/PlaywrightCapture@v1.25.0...v1.26.0
- Use new clock API in Playwright to speedup time
- Upgrade usage of stealth module
- Accept dialogs popup by default
- Bugfixes
- Bypass many more tracking boxes
- Avoid many deadlocks
v1.10.0
- Improve logging
- Improve documentation with env variables
- Support valkey instead of redis
- Support Ubuntu 24.04
Full Changelog: v1.9.0...v1.10.0
v1.9.0
New feature
Optionally attempt to click on the button allowing tracking for the page we capture
One of the most dramatic example is on cnews (french equivalent of FoxNews). There is no way to show a screenshot of the capture itself, but you can go see them by clicking on the images below (the stats for the capture)
Without tracking | With Tracking (you will need to zoom out a lot) |
---|---|
This feature is a WiP as it often needs specific code to find the button to click on, but quite a few common frameworks are supported. Feel free to open an issue (or even better a pull request) in PlaywrightCapture.
Changes
- [PlaywrightCapture] Do not capture the same URL more than onde when depth is > 0
- [PlaywrightCapture] Improvements when fetching favicons
- [PlaywrightCapture] Improve timeouts
- [PlaywrightCapture] Improve logging
- [LacusCore] Speedup DNS resolution
- [LacusCore] Improve retries
For more details see release notes for LacusCore and PlaywrightCapture
Full Changelog: v1.8.0...v1.9.0
v1.8.0 7073
What's Changed (Since 1.7.0)
- Improve monitoring
- Improve logging
- Improve handling of dead tasks
- Expose stats to API
- Strict typing
- Dump dependencies and maintenance
- Support python 3.12
- LacusCore changelog: https://github.com/ail-project/LacusCore/releases/tag/v1.8.0
- PlaywrightCapture changelog: https://github.com/Lookyloo/PlaywrightCapture/releases/tag/v1.23.0
Full Changelog: v1.7.0...v1.8.0