Как я могу отличить компонент .net WebBrowser от реального браузера? - PullRequest
2 голосов
/ 31 марта 2010

ОК, у нас есть онлайн-магазин загрузок, доступ к которому осуществляется через наше программное обеспечение. Недавно у нас были запросы разрешить загрузку через обычные браузеры, и довольно легко просто щелкнуть страницу загрузки. Проблема в том, что людям, имеющим две ссылки на скачивание, одну для программного обеспечения и одну для их веб-браузера, было бы непонятно, поэтому мы хотим различать эти две ссылки и показывать только соответствующую ссылку для загрузки.

Из того, что я собрал, компонент .net WebBrowser такой же, как IE, и использует тот же пользовательский агент, поэтому мы не сможем использовать его, если мы не создадим подкласс WebBrowser в программном обеспечении, чтобы заставить его использовать определенный пользовательский агент. , Это более разумный вариант, но мы должны были бы выпустить другую обновленную версию, которая не идеальна.

Есть ли другие способы узнать, кто-то получает доступ к сайту через компонент .net? Моя единственная альтернатива - скопировать магазин на другой адрес с разными ссылками на скачивание и отправить туда людей. Опять же, это выполнимо, но не идеально.

Ответы [ 3 ]

1 голос
/ 31 марта 2010

Проверьте, является ли window.external нулевым. IE реализует window.external, чтобы иметь такие методы, как AddSearchProvider, где большую часть времени WebBrowser.ObjectForScripting имеет значение null.

0 голосов
/ 01 апреля 2010

Пусть ваше программное обеспечение передаст невидимое (пользователю) значение в строке запроса URL.

Тривиально посмотреть, если это присутствует.

0 голосов
/ 31 марта 2010

Я не уверен, есть ли лучший способ сделать это, но вот одна идея ... Элемент управления WebBrowser имеет свойство Document, которое дает вам доступ к объекту DOM, представляющему загруженный документ ( после загрузки страницы). Этот объект имеет InvokeScript метод , который можно использовать для запуска некоторого JavaScript на загруженной странице.

Вы можете написать простую функцию JavaScript, скажем hideWebDownload(), которая переключит представление на представление, используемое при локальном запуске приложения, и вызовет его из приложения WinForms, в котором находится элемент управления WebBrowser:

webCtrl.Document.InvokeScript("hideWebDownload");

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

...