Closed yenba closed 1 year ago
I am experiencing the same issue and have been unable to reproduce it.
I've seen it also, I would love to add a ENV flag to save each HTML that was downloaded to try isolate it, I have a feeling it might be something in the encoding changing or something.
there is this attempt https://github.com/dgtlmoon/changedetection.io/pull/925
but again, I cant be expected todo all the work here, would be awesomesauce if someone else would help a bit :(
getting the same. i monitor lot of github tags pages and suddenly, sometimes one, sometimes multiple pages trigger blank changes. sometimes it triggers blank changes on other sites too. i have no proper way to reproduce it. the only way is to add a lot of my monitors to yours and wait.
"div.Box-row:nth-child(1) > div:nth-child(1) > div:nth-child(1) > div:nth-child(1) > h4:nth-child(1) > a:nth-child(1)"
@bykidi can you hit the 'share url' button and paste in the link it generates?
@bykidi btw... that dark mode looks awesome, how did you do it?
What i've noticed: using CSS selector (manual pick from firefox instead what is offered with built-in visual selector) reduces/eleminates false detections on github pages. but on some pages changedetection can't find my CSS selectors, which is why i'm forced to use the visual selector result. examples: wireguard download page: https://download.wireguard.com/windows-client/ "body > ul:nth-child(7) > li:nth-child(1) > a:nth-child(1)" results in: k-lite download pages, full and update packages: https://codecguide.com/download_k-lite_codec_pack_mega.htm https://codecguide.com/klcp_update.htm ".tdcontent > h4:nth-child(6)" ".tdcontent > h4:nth-child(5)" results are:
about those that sometimes trigger false changes... here is a bunch of watches, hope some of it can also trigger on your side https://changedetection.io/share/GBhNAeP6frca https://changedetection.io/share/dK34ZnckcSka https://changedetection.io/share/er2XApq63hQa https://changedetection.io/share/CBYplonj1Jga https://changedetection.io/share/4M-wjTz9Zswa https://changedetection.io/share/epV2uEgU4QUa https://changedetection.io/share/Uv534DVIV64a https://changedetection.io/share/v-L2Ft3LyZsa https://changedetection.io/share/swmRUdLLGJwa https://changedetection.io/share/RFM-bO2lb0ca https://changedetection.io/share/JYAoQc_nYZIa https://changedetection.io/share/OAbC9G2Y4gka https://changedetection.io/share/XPtjn5ICqvMa https://changedetection.io/share/_MxYVtnU60Ya this one triggered today
i use dark reader globally on all sites with exceptions
linking this issue with mine #908
Morning false positives on a bunch of github tags pages: https://changedetection.io/share/W52piCoIwz0a https://changedetection.io/share/95fCdVFLbO8a https://changedetection.io/share/95fCdVFLbO8a https://changedetection.io/share/NPTWII0MvH4a https://changedetection.io/share/NqUybbruJCMa
@bykidi does it only happen with watches that use chrome? or does it happen for all types of requests?
@dgtlmoon actually, i have no idea... all of my fetches use the latest version of chrome.
@bykidi does it only happen with watches that use chrome? or does it happen for all types of requests?
For me, it happens in all types of requests, not just Chrome.
I think I know - it's caused when you have a CSS/xPath filter applied, but the filter can not be found, then it is found again on the next check
I'm betting that your watches all have filters
Ok so I don't know how this is fixable yet, because some people have the scenario that
.on-sale
)There is a test to make sure this works https://github.com/dgtlmoon/changedetection.io/blob/3ebb2ab9ba593bea346c8ca20364f8690568170b/changedetectionio/tests/test_filter_exist_changes.py#L45
But here on this issue its like
i got filters on everything because sometimes there is a lot of changes that won't fit into telegram's message symbol limit, which is why i check for versions (mostly software) and then add the full diff link to it.
Ok so I don't know how this is fixable yet, because some people have the scenario that
They add a CSS filter for an element that doesn't yet exist, but SHOULD in the future (like a cinema ticket goes on sale
.on-sale
)They want changedetection.io to keep checking and notify them when a change/filter was detected
There is a test to make sure this works https://github.com/dgtlmoon/changedetection.io/blob/3ebb2ab9ba593bea346c8ca20364f8690568170b/changedetectionio/tests/test_filter_exist_changes.py#L45
But here on this issue its like
Filter existed for a while
Something in the JS or Browser didnt work, so the page partly rendered but the filter was missing
Page rechecked, filter re-appeared
Notification was sent
Hmm. That does make sense. Thanks for taking a look at it!
Maybe instead of "fixing" it, there could be some kind of a workaround. Something like an option to not send notifications if the {diff} field is blank?
At least in my case that would solve the blank notifications!
Can confirm. This early morning techpowerup site was down and my instance triggered 'filters not found 6 times' notify. Later then it triggered blank changes on all of the previous 'not found' watches. I think that we need 'only monitor for actual changes (ignore not found/found again)' option by default and those who monitor 'out of stock/back in stock' should specially use that option.
I've been seeing this as well for the past few weeks. It will usually trigger multiple sites and push notifications even though there is no change/diff
I was thinking of a smarter way to deal with this, maybe like a ratio number stored where the 0.0-1.0
tells of the success of the last 10(?) attempts
if the success ratio < 0.5
then we can send some alert/notification such as "Looks like the filter is sometimes not available and maybe sending false alerts, would you like to limit this watch to (insert solution here)"
@bykidi
Can confirm. This early morning techpowerup site was down and my instance triggered 'filters not found 6 times' notify. Later then it triggered blank changes on all of the previous 'not found' watches.
Thanks for that - that was exactly what I was thinking was happening
it is happening right now i have paused those watches. weird stuff happens - i get red notification that my specific filter is not found, but i see that the page was rendered properly (proper page screenshot on the preview tab)
There is indeed a change. Previously, i used this filter div.Box-row:nth-child(1) > div:nth-child(1) > div:nth-child(1) > div:nth-child(1) > h4:nth-child(1) > a:nth-child(1) but when there is 'no filter' - this exact field should be filtered like this div.Box-row:nth-child(1) > div:nth-child(1) > div:nth-child(1) > div:nth-child(1) > div:nth-child(1) > h2:nth-child(1) > a:nth-child(1)
After testing with the browserless version specified in the installation guide - the problem is the same. On github, sometimes (like right now) i still get false positives. Mostly, on github.
Imo an 'ignore blank diff' option would work fine
what we probably need is a 'stock/out of stock' mode which should ignore that and only monitor for actual changes...
@bykidi so whats the solution in the case that the CSS filter doesnt exist any more because you set the CSS filter to point to something like .current-price
?, then .current-price
disappears because it's sold out.. then comes back again.. you never knew
there is no easy answer
@NaruZosa but that would ignore when the filter was missing
i mean, for those kind of monitors there may be additional checkbox. if its enabled - changedetection acts like it does right now. but if its isn't - it should ignore for missing then found again filters and only notify if its missing for more than %filter_failure_notification_threshold_attempts% times
@bykidi yeha almost.. I think we're coming up with solutions based on assumptions tho, the solution should be
Imagine we were looking at this issue from the very start, and we have that log available, where we could have seen what was going on
I can reproduce this issue each time a check is met with a 429, followed by an OK-result (400 200). The latter will trigger a false-positive notification with an empty diff. I presume maybe the 429 pushes a record to the database, which then consecutive 400 200 result gets compared with?
Interestingly, I did not have such issues before, and I believe this may be a result of some specific configuration I changed. In General settings, I have "Treat empty pages as a change?" disabled, "Extract
@wrobelda > I can reproduce this issue each time a check is met with a 429, followed by an OK-result (400).
yeah that's super interesting, i'll write a automated test case and see if I can trigger that, maybe thats the main problem - non-200 replies are resetting the checksum
@bykidi @wrobelda > I can reproduce this issue each time a check is met with a 429, followed by an OK-result (400).
but 400
means 'bad response', this shouldnt trigger it, OR it will trigger it when 'allow non 200 responses' option is checked
@bykidi @wrobelda > I can reproduce this issue each time a check is met with a 429, followed by an OK-result (400).
but
400
means 'bad response', this shouldnt trigger it, OR it will trigger it when 'allow non 200 responses' option is checked
My apologies, I meant 200, of course, not 400!🤦🏻♂️ I am getting 429 when I occasionally get throttled. Once the limitation is lifted, things get back to normal, except that false-positive notification.
@wrobelda @bykidi https://github.com/dgtlmoon/changedetection.io/pull/1385 test passes... so its setting a filter, grabs the content with that filter, then tries different return-codes to see if it triggers a change... everything works
maybe related to playwright? are you able to try reproduce this with plain requests? can you try?
@wrobelda @bykidi #1385 test passes... so its setting a filter, grabs the content with that filter, then tries different return-codes to see if it triggers a change... everything works
maybe related to playwright? are you able to try reproduce this with plain requests? can you try?
I have had the "blank diff" issue on both playwright requests and plain requests.
https://changedetection.io/share/lC1Re_gJiWUa
I cant find a fault :-( but there must be something
I cant find a fault :-( but there must be something
Is there some verbose logging that could be enabled to trace the steps leading to notification?
You can track it with the step debugger, but more important than any of that is if you can find a way to reproduce it reliably
dunno if that is related or not, but i had a lot of empty changes during extensive packet losses because of my ISP. can test it when i get back home by faking packet losses on my mikrotik (edit: was busy yesterday, hope to get to my pc asap)
@bykidi yeah let me know.. could be a relationship if theres filters enabled, and the page returns empty.. or..
Basically we'll keep trying to find the scenario, add a test that can prove it, then fix the code
@bykidi @wrobelda I'de really love if you can find a way to reproduce this using the plain-requests method
@bykidi @wrobelda I'de really love if you can find a way to reproduce this using the plain-requests method
Actually, all of this was plain-request! I also get false-positives with Playwright for different checks, but I didn't notice any particular pattern there like I did with 429 -> 200.
i've put a 75% drop rate firewall rule with for all packages and one page just gave me a false-positive
@bykidi requests or playwright? which one?
whoopsie... here goes my telegram token...
deleted it for you
well, i guess, in my case, its 'not found, found again', after all...
Filter for ff6e155e-0166-47fc-bc8e-b7f734f2b796 not found, consecutive_filter_failures: 1 Change detected in UUID ff6e155e-0166-47fc-bc8e-b7f734f2b796 - https://github.com/NickeManarin/ScreenToGif/tags Process Notification: AppRise notifying
Describe the bug Occasionally I will have a notification kick off saying that there was a "change" but the diff is blank and the files are identical.
Version v0.39.19.1 - Running in Docker Container on Ubuntu 22.04.1 LTS Server
To Reproduce I'm not sure how to reproduce the behavior as it seems inconsistent.
Share link https://changedetection.io/share/ym-I7IBLMW4a
Expected behavior The program to not trigger alerts if there are no changes in the diff.
Screenshots No changes are detected in this diff comparison however it still triggered a change and a notification.
Here are the actual files compared in VScode. Same thing, no difference between them.
Desktop