Берешь штатную компоненту WebBrowser, кидаешь его на форму если gui или вручную, прописываешь ему ссылку и инжекти в него на body.onload свой скрипт, который вызывает уже твои калбеки на с# либо сам со стороны программы проверяй содержимое document, там полноценный доступ к dom
этот способ будет работать вне зависимости от того как создается содержимое сайта, на бакенде или на клиенте javascript
недостаток - если используется майкрософтовский компилятор, то компонента будет устаревший internet explorer 11, если же собрать mono - будет фаерфокс