Download Latest Version v0.8.12 source code.zip (801.8 kB)
Email in envelope

Get an email when there's a new version of OpenSERP

Home / v0.8.12
Name Modified Size InfoDownloads / Week
Parent folder
openserp-darwin-amd64-0.8.12.tgz 2026-07-22 11.4 MB
openserp-darwin-arm64-0.8.12.tgz 2026-07-22 10.8 MB
openserp-linux-386-0.8.12.tgz 2026-07-22 10.4 MB
openserp-linux-amd64-0.8.12.tgz 2026-07-22 11.0 MB
openserp-linux-arm64-0.8.12.tgz 2026-07-22 10.2 MB
openserp-windows-386-0.8.12.tgz 2026-07-22 9.9 MB
openserp-windows-amd64-0.8.12.tgz 2026-07-22 10.3 MB
openserp-windows-arm64-0.8.12.tgz 2026-07-22 9.3 MB
README.md 2026-07-22 2.8 kB
v0.8.12 source code.tar.gz 2026-07-22 693.8 kB
v0.8.12 source code.zip 2026-07-22 801.8 kB
Totals: 11 Items   84.8 MB 4

Reliability release. The main theme is honest error reporting: engines now tell you why a search returned nothing instead of handing back an empty list. Plus batch URL extraction and a rebuilt browser fingerprinting layer.

Highlights

Engines no longer silently return empty results. Captcha pages, soft blocks and genuine "no results" pages are now classified separately and surfaced as captcha_detected, blocked or empty_result error codes. The detection is shared between the browser and raw HTTP paths, so /<engine>/search and /<engine>/parse behave the same across Google, Bing, DuckDuckGo, Yandex, Baidu and Ecosia. Google's /sorry/ interstitial is detected explicitly. This addresses the confusing empty responses reported in [#36] and [#33].

POST /extract/batch - extract content from up to 20 URLs in one call, returning the {page_content, metadata} array shape Open WebUI's external web loader expects. A URL that fails validation or extraction gets metadata.error and empty content instead of failing the whole batch; each item carries its own took_ms. Contributed by @AIWintermuteAI in [#39].

DuckDuckGo pagination fixed. Non-zero offsets returned wrong results because DDG's pagination doesn't work off URL params - the engine now drives the "More results" button. Fixes [#40], contributed by @subediparas5 in [#41].

Browser fingerprinting moved to native CDP. Dropped the injected patch.js and localized profile files in favor of CDP-level overrides, which is both faster and less detectable. Docker image now ships an updated Chrome.

Other changes

  • Proxy sessions are scoped to credentials, so rotating proxies no longer leak sessions between accounts
  • err_tunnel_connection_failed is now treated as a retryable proxy network error
  • New block_resources and block_trackers config options to skip heavy subresources in browser mode
  • X-Proxy-Attempts and X-Use-Profile added to the default CORS allow-list
  • docker-compose.yaml now mounts config.yaml by default, with proxy config examples
  • Fixed a YAML parse error in the OpenAPI spec; /extract/batch documented and exempted from the default request timeout

Upgrade notes

  • proxies.allow_request_proxy_url now defaults to true. If you expose OpenSERP publicly and don't want callers supplying their own proxy URL, set it back to false.
  • Searches that previously returned 200 with an empty array may now return an error with captcha_detected / blocked. Handle those codes if your client treats empty as success.

Contributors

Thanks to @AIWintermuteAI and @subediparas5 - both first-time contributors.

Full Changelog: https://github.com/karust/openserp/compare/v0.8.6...v0.8.12

Source: README.md, updated 2026-07-22