Как я могу проверить, указывают ли два разных URL на один и тот же ресурс? - PullRequest
3 голосов
/ 29 июня 2010

Допустим, у меня есть веб-сайт, размещенный на компьютере с именем "linux", и он является частью двух разных сетей с адресами 192.168.1.1 и 10.1.1.1.Работая локально над «linux», я могу получить доступ к этому веб-сайту по следующим URL:

http://192.168.1.1/ http://10.1.1.1/ http://linux/ http://localhost/ http://127.0.0.1/

Работая на другом компьютере в сети «10.1.1.0/24», я могу использовать следующее:

http://10.1.1.1/ http://linux/

Нона «192.168.1.0/24» я могу использовать только:

http://192.168.1.1/ http://linux/

Я занимаюсь разработкой приложения, которое сравнивает URL-адреса, и в контексте этого приложения дваURL-адреса равны, если они указывают на один и тот же ресурс.

Существует ли быстрый способ такого сравнения с использованием класса URI в C #?

Ответы [ 2 ]

3 голосов
/ 29 июня 2010

Класс URI не поможет вам;он может только определить, являются ли два URI одним и тем же URI, и являются ли они одним и тем же URI, если они имеют одинаковое имя сервера / IP-адрес.

Лучший вариант - загрузить ресурс с обоих URL-адресов и посмотреть, является ли он одним и тем же ресурсом, проверив равенство и предположив, что два ресурса - это один и тот же ресурс, если они имеют одинаковую последовательность битов.

Это не вариант для меня, стоимость исполнения может быть слишком большой.Я надеялся на что-то, что могло бы соответствовать части адреса хоста URI, тогда все, что осталось сравнить, это относительный путь и порт ... - Тиадо де Арруда

К сожалению, в фреймворке нет ничего, что сделало бы то, что вы хотите, из коробки, потому что нет надежного способа сопоставления разных имен хостов одному и тому же хосту и, следовательно, одному и тому же ресурсу.

Вам нужно будет каким-то образом сопоставлять хосты с различными псевдонимами этих хостов и запрашивать их самостоятельно.Свойство URI.Host получит имя хоста URI, о котором идет речь, но вам придется его перевести самостоятельно.Ничто в рамках не сможет сделать это для вас.

0 голосов
/ 11 июня 2014

Вы можете сделать это с красивым супом, используя python (почистите страницу и проверьте, совпадают ли несколько элементов), однако это будет медленнее, поскольку вам нужно будет извлекать реальные веб-данные.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...