A self-hosted program, which detects when a website's contents are updated (a website has changed) and notifies you about it.
Not many services exist (that I can find of) which notify you about changes in websites that you might want to track.
Some do, but they're either paid or limited in how many websites you can track.
All this could be overcome for free, if you have some programming background and time.
I created this Change Detector, to batch check the websites which are on my monitoring list which I can run on my own server, or on the cloud and works according to how I want. I am aiming for this project to have the same features as offered by other paid services by using the power of Open-Source Community. And Time.
GPL License will guarantee that derivatives of this project remain open-sourced
-
Save the websites you want to check in the csv file
config.csv
as:
(4 columns used as of latest commit)1 | <<webpage 1 name>>, <<webpage 1 url to check>>, <<OPTIONAL timeout for finding delta change>>, <<OPTIONAL: True/False whether to verify SSL or not; default value in program is True>> 2 | <<webpage 2 name>>, <<webpage 2 url to check>>, <<OPTIONAL timeout for finding delta change>>, <<OPTIONAL: True/False whether to verify SSL or not; default value in program is True>>
- Note that you do not need to write any "csv headings". just directly follow this format.
- If you get SSLError, then you must write
false
in the 4th column for the respective webpage.
-
Run main.py (
python3 main.py
).
By default program will with default settings. You can configure some of them, by passing them as command line arguments.
Snip ofpython3 main.py -h
orpython3 main.py --help
:usage: main.py [-h] [-w XhYmZ] [-c filename] [-d] [-t HH:MM] This program checks from the supplied list of webpages, that if anyone of those have changed and notifies about it. optional arguments: -h, --help show this help message and exit -w XhYmZ, --wait XhYmZ The duration for which the program should wait before checking the page again. Defaults to 2 hours. Use compound duration say 2h -c filename, --config filename use the specified file instead of default config.csv -d, --debug Increase logging level of program to debug. AKA increases verbosity of program -t HH:MM, --time HH:MM time to send a daily alert notifying that the program is working. Enter time in HH:MM 24 hour format. Otherwise uses program's default time of 14:00 IST
-
Changes will be notified by Telegram .
You need to create your own bot, and enter your own botTOKEN
and yourCHAT_ID
either on line 26 and 27 in main.py in the functionalert_onTelegram()
or create a file same as telegram_tokens.json and enter yourCHAT_ID
andTOKEN
in eitherstr
orint
there.
To be written... (For the time being, currently the program calls bash's diff
command to check for changes)
- Have a better Logging format.
- Skipping the webpage when any critical error/exception is encountered instead of stopping the execution of program.
- Ability to add more websites to the list without stopping the program.
-
Check for constant changes ( aka ∆change ) daily.
some websites have messed up code changing daily, which needs to be "intelligently" identified if the change is some daily-occurring change (such as day/date) or an actual change.
much better way would be to reply back to the bot about the False Positive, and the bot will then add it to list_ofDeltaChange - Generate the before and after screenshots (much like how Visualping does).
- Give a better name to the project?