{% extends 'base.html' %} {% block content %} {% from '_helpers.jinja' import render_field, render_checkbox_field, render_button %} {% from '_common_fields.jinja' import render_common_settings_form %}
{{ render_field(form.requests.form.time_between_check, class="time-check-widget") }} Default time for all watches, when the watch does not have a specific time setting.
{{ render_field(form.requests.form.jitter_seconds, class="jitter_seconds") }} Example - 3 seconds random jitter could trigger up to 3 seconds earlier or up to 3 seconds later
{{ render_field(form.application.form.filter_failure_notification_threshold_attempts, class="filter_failure_notification_threshold_attempts") }} After this many consecutive times that the CSS/xPath filter is missing, send a notification
Set to 0 to disable
{% if not hide_remove_pass %} {% if current_user.is_authenticated %} {{ render_button(form.application.form.removepassword_button) }} {% else %} {{ render_field(form.application.form.password) }} Password protection for your changedetection.io application. {% endif %} {% else %} Password is locked. {% endif %}
{{ render_checkbox_field(form.application.form.shared_diff_access, class="shared_diff_access") }} Allow access to view watch diff page when password is enabled (Good for sharing the diff page)
{{ render_field(form.application.form.base_url, placeholder="http://yoursite.com:5000/", class="m-d") }} Base URL used for the {{ '{{ base_url }}' }} token in notifications and RSS links.
Default value is the ENV var 'BASE_URL' (Currently "{{settings_application['current_base_url']}}"), read more here.
{{ render_field(form.application.form.pager_size) }} Number of items per page in the watch overview list, 0 to disable.
{{ render_checkbox_field(form.application.form.extract_title_as_title) }} Note: This will automatically apply to all existing watches.
{{ render_checkbox_field(form.application.form.empty_pages_are_a_change) }} When a page contains HTML, but no renderable text appears (empty page), is this considered a change?
{% if form.requests.proxy %}
{{ render_field(form.requests.form.proxy, class="fetch-backend-proxy") }} Choose a default proxy for all watches
{% endif %}
{{ render_common_settings_form(form.application.form, emailprefix, settings_application) }}
{{ render_field(form.application.form.fetch_backend, class="fetch-backend") }}

Use the Basic method (default) where your watched sites don't need Javascript to render.

The Chrome/Javascript method requires a network connection to a running WebDriver+Chrome server, set by the ENV var 'WEBDRIVER_URL'.


Tip: Connect using BrightData Proxies, find out more here.
If you're having trouble waiting for the page to be fully rendered (text missing etc), try increasing the 'wait' time here.
This will wait n seconds before extracting the text.
{{ render_field(form.application.form.webdriver_delay) }}
{{ render_checkbox_field(form.application.form.ignore_whitespace) }} Ignore whitespace, tabs and new-lines/line-feeds when considering if a change was detected.
Note: Changing this will change the status of your existing watches, possibly trigger alerts etc.
{{ render_checkbox_field(form.application.form.render_anchor_tag_content) }} Render anchor tag content, default disabled, when enabled renders links as (link text)[https://somesite.com]
Note: Changing this could affect the content of your existing watches, possibly trigger alerts etc.
{{ render_field(form.application.form.global_subtractive_selectors, rows=5, placeholder="header footer nav .stockticker") }}
  • Remove HTML element(s) by CSS selector before text conversion.
  • Add multiple elements or CSS selectors per line to ignore multiple parts of the HTML.
{{ render_field(form.application.form.global_ignore_text, rows=5, placeholder="Some text to ignore in a line /some.regex\d{2}/ for case-INsensitive regex ") }} Note: This is applied globally in addition to the per-watch rules.
  • Note: This is applied globally in addition to the per-watch rules.
  • Each line processed separately, any line matching will be ignored (removed before creating the checksum)
  • Regular Expression support, wrap the entire line in forward slash /regex/
  • Changing this will affect the comparison checksum which may trigger an alert
  • Use the preview/show current tab to see ignores

Drive your changedetection.io via API, More about API access here

{{ render_checkbox_field(form.application.form.api_access_token_enabled) }}
Restrict API access limit by using x-api-key header


API Key {{api_key}}

Tip: You can connect to websites using BrightData proxies, their service WebUnlocker will solve most CAPTCHAs, whilst their Residential Proxies may help to avoid CAPTCHA altogether.

It may be easier to try WebUnlocker first, WebUnlocker also supports country selection.

When you have registered, enabled the required services, visit the API example page, then select Python, set the country you wish to use, then copy+paste the example URL below
The Proxy URL with BrightData should start with http://brd-customer...

When you sign up using https://brightdata.grsm.io/n0r16zf7eivq BrightData will match any first deposit up to $150

{{ render_field(form.requests.form.extra_proxies) }} "Name" will be used for selecting the proxy in the Watch Edit settings
{{ render_button(form.save_button) }} Back Clear Snapshot History
{% endblock %}