Ваш единственный реальный вариант - автоматизировать браузер. Как уже говорилось в других ответах, вы не можете надежно смоделировать браузерный javascript, не имея полной DOM.
К счастью, есть способы автоматизировать браузер, посмотрите Selenium .
Он имеет C # API , поэтому вы можете управлять браузером из C #.
Используйте ваш сканер .NET для сканирования сайта. Всякий раз, когда вы встречаете ссылку href="javascript:...
, обрабатывайте страницу, содержащую ссылку в Selenium:
- Используйте Selenium API, чтобы сообщить браузеру о загрузке страницы.
- Используйте API Selenium, чтобы найти все ссылки на странице.
Таким образом, ваш паук использует Selenium только тогда, когда это необходимо (страницы без ссылок javascript могут обрабатываться с помощью уже полученного вами кода браузера без паука). А поскольку это параллельная рабочая нагрузка , вы можете легко запустить одновременно несколько процессов Selenium (на одном компьютере или на других компьютерах).
Но помните, что href="javascript
вряд ли единственный способ, которым страница может иметь динамические ссылки. Наиболее распространенным случаем, вероятно, является сценарий onload
или $(document).ready()
, который манипулирует DOM и добавляет ссылки таким образом.
Чтобы поймать этот случай (и другие), пауку, вероятно, придется использовать Selenium для всех страниц, имеющих тег <script>
.